重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

【GOLF me!】初月無料お試し

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

A 回答 (2件)

こんにちは。


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

各コントロールの値が空白でないとき、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
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!