• ベストアンサー

フォームに入力した回数だけ文字表示できない・・・

VBAでフォームを使ったものでやりたいことがあるのですがうまく出来なく悩んでいます。 フォームで入力した値をそれぞれカンマで区切って入力した回数だけ文字を表示したいのですがどうすればよいでしょうか? おそらくSplit関数を使えばよいかと思いますが・・・ 例えばフォームに「A, B, C, D」と入力します。 そのフォームに入っている回数だけ繰り返しA1から下に 「私はAです」 「私はBです」 「私はCです」 ・・・・・といった具合に繰り返して文字を出したいのですが出来ますでしょうか?

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

  • ベストアンサー
回答No.4

'フォームに設置したTextBox1に入力したデータをsheet1へ書き出します。 Private Sub 分割()  Dim i As Integer  Dim w1, w2 As String  Dim sh_name As String 'シート名格納用  Dim x As Integer 'セルの座標(列)用  Dim y As Integer 'セルの座標(行)用  Dim buf As Variant '分割データ格納用  sh_name = "sheet1" 'データを書き出すシート名設定  x = 1 'セルの座標(列)設定  y = 1 'セルの座標(行)設定  w1 = TextBox1.Text  buf = Split(w1, ",")  If UBound(buf) < 0 Then   MsgBox "データがありません。"  Else   For i = 0 To UBound(buf)    If Trim(buf(i)) <> "" Then 'ブランクの場合は無視     w2 = "私は" & buf(i) & "です"     Sheets(sh_name).Cells(y, x).Value = w2     y = y + 1    End If   Next i  End If End Sub

komarimono
質問者

お礼

ありがとうございます!皆さんのおかげで出来ました

その他の回答 (3)

回答No.3

>Ubound(a)-1回 違います。 #1のソースでも意識したけど ReDim a(2) とかいう配列で使える要素は a(0),a(1),a(2) の3つ UBoundで返るのは要素数の3じゃなくて最大添字の2なので, 0からUBound(a)までのUBound(a) + 1回が正解。 念のため。

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.2

下記あいまい。補足のこと。 >フォームに入っている回数だけ とは?A,B,C,Dならそれぞれ1回使って、計4度ということか。 Splitして、A,B、C、Dは配列に入るが、 "私は" & a(i) & "です" を0からUbound(a)-1回繰り回せば済むことでは 。 >を出したいのですが どういう風に出すことを考えているのか。何かコントロール上か?

回答No.1

Option Explicit Private Sub CommandButton1_Click() Dim Strings() As String Dim str As String Dim i As Long '「フォームに入力」の表現が曖昧だったため,フォームにテキストボックスを貼り付けた。 Strings = Split(TextBox1.Text, ",") For i = 0 To UBound(Strings) ' Stringsの書式をもっと明確に定義するまではTrim関数を通したりの処理をすべきではない ' 厳密に定義せず使うのは「有害」とまで考えている。 ' したがって質問文の入力内容を使うと表示に半角空白まで含まれる ' 私はhoge,fugaです。というような表記が出来ないとか。 ' 個人的には '「"A","B","C","D"という風に二重引用符で括る形式とし、 ' 項目の文字列として"を入れたい場合\"と書く。 ' 引用符で括ることが出来るのはUS-ASCIIで定義された制御文字を除く全ての文字である」 'というようなのが好き Cells(i + 1, 1).Value = "私は" & Strings(i) & "です。" Next End Sub

関連するQ&A

専門家に質問してみよう