- ベストアンサー
Excel VBAのTextboxについて
こんにちは。 Excelのユーザーフォームのテキストボックスに、 あああ いいい と改行されたデータを入力した後、 セルA1に「あああ」 セルA2に「いいい」とできないでしょうか。 Windows2000、Office2003です。 あまり詳しくないので説明不足な点もあると思いますが、よろしくお願いいたします。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
VBE画面で挿入ーユーザーフォーム そのフォームにテキストボックスとコマンドボタンをツールボックスからD&Dして、1つづつ貼り付けます。 コマンドボタンにクリックイベントを Private Sub CommandButton1_Click() a = TextBox1.Text s = Split(a, Chr(10)) For i = 0 To UBound(s) Worksheets("sheet4").Cells(i + 1, "A") = s(i) Next i End Sub にします(上記を貼り付け) Sheet4は適当に変えてください。 テキストボックスのプロパティボックスを開き EnterKeyBehavior=True MultiLine=True WordWrap=True を設定する。 そして実行する。 テキストボックスの中へ文字を入力する。 例 (+は続けて入力を示す。) おおた ひとし+(改行) 東京都千代田区+(改行) 大田 均+(改行) ・・ コマンドボタンをクリックする A1セル以下のセルに分かれて 上記語句・文章が入るでしょう。 質問には、こんなことでよいでしょうか。
その他の回答 (3)
- Wendy02
- ベストアンサー率57% (3570/6232)
こんにちは。 Multiline = True の EnterKeyBehavior =Trueで入る、「Enter」のコードは、vbCrLf です。だから、Split で、そのどちらかで区切ったら、片方が残ってしまいますから、その二つ(vbCrLf)を、デリミタにします。 Private Sub CommandButton1_Click() Dim buf() As String If TextBox1.Text <> "" Then buf = Split(TextBox1.Text, vbCrLf) Range("A1").Resize(UBound(buf) - LBound(buf) + 1) = _ WorksheetFunction.Transpose(buf) End If End Sub なお、ご質問は、A1, A2 になっていましたので、Range("A1")にしていますが、できれば、UserForm の立ち上げの際に、 モードレスモード(UserForm1.Show 0)にし、Range("A1")は、ActiveCell にしてください。必要なら、別にA1を Select/Activate してください。
お礼
ありがとうございました。参考にいたします。
- fortranxp
- ベストアンサー率26% (181/684)
Offset(x,y)がポイントでしょうか。 Dim MyRec As Range Private Sub CommandButton1_Click() Set MyRec = MyRec.Offset(1, 0) MyRec.Cells(0, 1).Value = TextBox1.Text End Sub Private Sub UserForm_Initialize() Set MyRec = Range("A1") End Sub
お礼
ありがとうございました。参考にいたします。
- BLUEPIXY
- ベストアンサー率50% (3003/5914)
'こんな感じ Private Sub CommandButton1_Click() Dim a a = Split(TextBox1.Text, vbLf) Range("A1") = a(0) Range("A2") = a(1) End Sub
お礼
ありがとうございました。参考にいたします。
お礼
ありがとうございました!できました!!