• ベストアンサー

VBAの変数について

VBAでUserFormからデータを入力します。 入力された各データをTarget1~Target20に代入します。 各Targetにデータが入っている場合は、配列K(i)に「1」を格納します。 そこで、Target "1"~"20" を変数iであらわしたいのですが、どのように表現したらよいのでしょうか。 Dim i As Integer Dim K(20) As Integer Target1 = TextBox1.Value Target2 = ComboBox1.Value : : Target19 = TextBox12.Value Target20 = ComboBox8.Value For i = 1 To 20 If 『  ?   』 <> "" Then K(i) = 1 EndIf Next i

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

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

こんにちは。 Target "1"~"20"を Dim Target(1 To 20) のようにして、 配列変数にすれば良いかと思います。

すると、全ての回答が全文表示されます。

その他の回答 (1)

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

各コントロールの値が空白でないとき、K(i)に1をセットして 「後それをどう(いう場面で)使うのですか?」。 何か熟達者に聞けば、すっきりした方法があるのに、たまたま質問者が思いついた、流儀でことをやろうとしているように、思えてならない。 VBAでは、コントロール配列を使えないので、その代わりを求めているのかな。 私がいつも言っているように、したいことを素直に述べて、熟達者の回答の真似をしないと、進歩しないと思うので。 見当違いならすみません。 ーー 文句言うばかりなので参考になりそうなのを。 確認後は、Msgboxは削除してください。 Private Sub CommandButton1_Click() Dim k(20) Dim ctobj As Object For Each ctobj In UserForm1.Controls i = i + 1 If TypeName(ctobj) = "TextBox" Then MsgBox ctobj.Name If ctobj.Value <> "" Then k(i) = 1 End If If TypeName(ctobj) = "ComboBox" Then MsgBox ctobj.Name If ctobj.Value <> "" Then k(i) = 1 End If Next For i = 1 To UserForm1.Controls.Count MsgBox k(i) Next i End Sub

すると、全ての回答が全文表示されます。

関連するQ&A