プロが教えるわが家の防犯対策術!

ユーザーフォームに3つのオプションボタンを配置し、CommandButton1を押すと、オプションボタンの選択により、セルa1に”aaa","bbb","ccc"のいずれかを書き込むようにしました。
このようにOptionButton1~OptionButton3と、それぞれ記述するのではなく、オプションボタンを配列にして一つにまとめる方法はありますか。よろしくお願いします。

Private Sub CommandButton1_Click()
If OptionButton1 = True Then
Range("a1") = "aaa"
End If
If OptionButton2 = True Then
Range("a1") = "bbb"
End If
If OptionButton3 = True Then
Range("a1") = "ccc"
End If
End Sub

A 回答 (2件)

こんばんは!



Private Sub CommandButton1_Click()
Dim i As Long, myAry As Variant
myAry = Array("aaa", "bbb", "ccc")
For i = 1 To 3
If Controls("OptionButton" & i) = True Then
Range("A1") = myAry(i - 1)
Exit For
End If
Next i
End Sub

こんな感じでループができると思います。m(_ _)m
    • good
    • 0
この回答へのお礼

ありがとうございます。セルに入力する文字を配列にする方法があったのですね。また、OptionButtonの後ろに1から3の数値を「i」を使って代入する事が出来ました。

お礼日時:2017/06/17 22:59

Controlsプロパティを使えば、配列のようにあつかえます。


以下のマクロは、
OptionButton1 がtrueの時1、
OptionButton2がtrueの時2、
OptionButton3がtrueの時3をA1に設定します。

-------------------------------------------
Private Sub CommandButton1_Click()
Dim i As Long
For i = 1 To 3
If Controls("OptionButton" & i).Value = True Then
Range("A1").Value = i
End If
Next
End Sub
    • good
    • 0
この回答へのお礼

ありがとうございます。配列を作ることが出来ました。まとまった記述が出来そうです。

お礼日時:2017/06/17 22:58

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