こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

エクセルVBA テキストボックス

いつもお世話になっております。

エクセルでVBAを使いユーザーフォームのテキストボックスで
文章入力をしようと思っているのですが、少しトラブルがありましたのでお教え願います。

エクセルシートの横がa~k、縦を9~34までのシートを結合して
その中にテキストボックスで入力した文章を入れるように作っています。
MultiLineとEnterKeyBehaviorをTrueにして

Private Sub CommandButton1_Click()
Unload Me
End Sub

Private Sub TextBox1_Change()
Sheets("sheet1").Range("a9") = UserForm1.TextBox1
End Sub

Private Sub UserForm_Initialize()
TextBox1.Value = Range("a9").Value
End Sub

Private Sub UserForm_Activate()
With Me
.Left = Application.Left
.Top = Application.Top

.Left = .Left + 350
.Top = .Top + 80
End With
End Sub

という状態になっているのですが、文章を入力して16行目で改行するとシートの方で「#VALUE!」と出てきてしまうので一旦ユーザーフォームを閉じてもう一度フォームを立ち上げると
「実行時エラー’-2147352571(80020005) Valueプロパティが設定できません。種類が一致しません。」
と出てきます。
デバッグすると

 Private Sub CommandButton1_Click()
→ UserForm1.Show
 End Sub

と出てきます。
なにがおかしいのでしょうか?
今回初めてVBAを作っているので初歩的な間違いかもしれませんがよろしくお願いします

投稿日時 - 2007-12-03 15:12:03

QNo.3567551

すぐに回答ほしいです

質問者が選んだベストアンサー

追体験しましたが、質問のようになりませんでした。とりあえず報告します。
>横がa~k、縦を9~34までのシートを結合して
横方向にA列からk列、縦方向に第9行から第32行まで、セルを
(シートでなく)結合しているでしょう。
ーー
文章でも何がやりたいか、主なるものを書き添えてください。
今回はセルに入力しないでテキストボックスに入力して、セルの値にしたい、ですね。
ーー
私がやったら、質問の状況になりませんでした。(セル結合は小範囲でテストしましたが)
1行が長い文章でしょうか。
ーー
それで
消去法で
(1)セル結合をやめる
(2)Private Sub UserForm_Activate()
をやめる。課題の本質と関係ないと思うので。
(3)Private Sub UserForm_Activate()
をやめる
(4)1行を短い文章にして、16行目で同じになるか。
をやって、どうなるか見てはどうでしょう。

投稿日時 - 2007-12-03 18:18:03

お礼

ご回答有難う御座います。

原因が解りました!

16行目  ではなく 255文字以上入力すると Value となっていました。
たまたま16行目が256文字目だった訳です・・・


で、
Private Sub TextBox1_Change()
Sheets("sheet1").Range("a9") = UserForm1.TextBox1
End Sub
の= UserForm1.TextBox1を= UserForm1.TextBox1.text
にしたら解決しました。

文字制限があったなんて知りませんでしたw


有難う御座いました。

投稿日時 - 2007-12-05 12:35:47

ANo.1

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(1)

あなたにオススメの質問