こんにちは、Ryoです。
ユーザーフォームに配置できるコントロールの1つとしてOptionButtonがありますが、このボタンは複数配置しても1つがONであれば他は全てOFFとなりますので用途によってはオプションボタンをグループ分けしたいこともあるかと思います。今回はGrouNameプロパティを使用したグループ化や解除設定方法等について書いていきます。
1.サンプル概要
ユーザーフォーム上にOptionButtonを4つ、グループ設定用のコマンドボタン1と設定解除/ボタンOFFを行うコマンドボタン2をそれぞれ配置しています。
初期状態ではOptionButton1~4のいずれかをONにすると他はOFFになりますが、「Group設定」ボタンを押すとOptionButton1と2、3と4でそれぞれグループ分けされるので、それぞれのグループで1つのOptionButtonを選択できるようになります。
「解除」ボタンを押すとグループ設定の解除と全てのボタンをOFFにしますので、初期状態に戻ります。
2.サンプルコード
◆構成
UserForm構成は以下の通りになります。
◆CommandButton1(Group設定)
Private Sub CommandButton1_Click() 'OptionButton1と2をGroupA、 'OptionButton3と4をGroupBに設定 OptionButton1.GroupName = "GroupA" OptionButton2.GroupName = "GroupA" OptionButton3.GroupName = "GroupB" OptionButton4.GroupName = "GroupB" '↓↓オプションボタン番号を変数として扱いたい場合の記述例 'Dim i As Integer 'For i = 1 To 4 'With UserForm1.Controls("OptionButton" & i) 'Select Case i 'Case Is < 3 ' .GroupName = "GroupA" 'Case Else ' .GroupName = "GroupB" 'End Select 'End With 'Next i 'OptinButton1,OptionButton2・・・のような場合に変数で処理するには '上述のように例)UserForm1.Controls("OptionButton” & i)とすれば対応可。 'OptionButton & i.GroupName =・・・のような記述は不可。 '1つの例ですが、このような形で記述しておくとオプションボタン、 'グループ増減などに融通が利くので対処しやすいと思います。 End Sub
オプションボタンをグループ化するにはGroupNameプロパティを利用します。
構文:オブジェクト.GroupName =name
グループにまとめられたオプションボタンはグループ内では1つのオプションボタンのみオンにすることができます。その際に他のオプションボタンは自動的にOFFとなります。
このサンプルではOptionButton1と2をGroupA、3と4をGroupBに設定していますので、構文にそってOptionButton1.GroupName = “GroupA”のようにそれぞれ記述していけばOKです。
但し、この記述では変更や追加などが生じた際に対処が煩わしいのでOptionButton番号を変数として扱う場合の参考例をコメントに記載しています。この例に記述したようにフォームに配置するボタン等のコントロールはUserForm1.Controls(“OptionButton” & i)のような形で番号を変数として対処できますので、知っておくと便利です。
◆CommandButton2(グループ設定解除、各ボタンOFF)
Private Sub CommandButton2_Click() 'OptionButtonのグループ設定解除、各ボタンOFF(未選択) Dim i As Integer For i = 1 To 4 With UserForm1.Controls("OptionButton" & i) .GroupName = "" 'グループ解除 .Value = False 'ボタンOFF(未選択状態) End With Next i End Sub
グループ解除して初期状態に戻したい場合、コマンドボタン1で設定したグループ名を消せばOKですので、.GroupName = “”としています。
各ボタンのON/OFFも初期状態に戻しますので、.Value=FalseとすることでボタンはOFFに設定できます。ちなみにTrueとすればONになります。
これらの処理をオプションボタン数の4回ループ処理を繰り返すことで、全て解除し初期状態に戻しています。
3.まとめ
オプションボタンのグループ化は上述以外ではユーザーフォームを作成する際に表示されるツールボックスにある「フレーム」を利用することで設定することも可能です。
今回の方法は手段として知っておくとユーザーフォームを作成する際に役に立つこともありますので、何か機会があればか活用などをご検討くださいませ。
以上、オプションボタンのグループ化や解除を行う方法についてでした!今回の記事が何かの参考になれば幸いです。
Ryo