このページではオプションボタン(ラジオボタン)の Value プロパティについて解説します。
オプションボタンは2つ以上設置し、その中から1つを選択するためのコントロールです。このコントロールの特徴は、あるオプションボタンを操作すると他のオプションボタンの Value プロパティが変わることにあります。もう少し具体的に言うと、複数あるオプションボタンの中で Value プロパティに True を設定できるのは1つだけで、あるオプションボタンに True を設定すると他のオプションボタンは自動的に False となります。
オプションボタンは前述のチェックボックスと同様に選択状態でも未選択でもない、”NULL状態”を表現することが可能です。
説明済みプロパティ
コントロールオブジェクトが異なるだけで前のページで説明した内容と同じプロパティについては説明を割愛させていただきます。以下のリンク先をご覧になってください。
※説明の中に出てくるコントロールオブジェクトは適宜読み換えてください。
選択状態の取得および設定(Value プロパティ)
選択状態の取得および設定を行うには Value プロパティを使用します。True を設定することで選択状態、False を設定することで未選択状態にすることができます。冒頭にも説明しましたが、複数あるオプションボタンのうち True を設定できるのは1つだけで、それ以外は自動的に False になります。
NULL状態にするにはプロパティウィンドウから設定する場合とコードから設定する場合で設定方法が異なります。プロパティウィンドウから設定する場合は Value プロパティをクリアします。コードから設定するには Value プロパティに NULL 値を設定します。
- 選択状態
- 未選択状態
- NULL状態
プロパティウィンドウでの設定
True/False を設定します。値をクリアするとNULL状態になります。
コードの記述例1
'選択状態に設定 Option1Button1.Value = True '未選択状態に設定 Option1Button1.Value = False 'NULL状態に設定 Option1Button1.Value = NULL
コードの記述例2
以下のコードは、コマンドボタンのクリックイベントで、選択されているオプションボタンの Caption プロパティを表示する例です。オプションボタンが少ない場合はIf~ElseIfで判別してもよいですが、ここではあえて配列とForループを使用してみました。
なお、オプションボタンは以下の図のように3つ(OptionButton1 ~ 3)設置されており、すべて未選択状態(False)に設定されているものとします。
もし、NULL状態(NULL 値)を判別したい場合は IsNull関数 を使用してください。
(使用例 ⇒ チェックボックスのNULL状態(NULL値)を判別する)
Private Sub CommandButton1_Click() Dim OptionAry As Variant Dim flg As Boolean Dim i As Integer '複数のオプションボタンを配列として格納 OptionAry = Array(OptionButton1, OptionButton2, OptionButton3) '選択フラグの初期化 flg = False 'オプションボタンのチェック For i = 0 To UBound(OptionAry) If OptionAry(i).Value Then 'フラグに True を設定して、チェック処理を抜ける。 flg = True Exit For End If Next 'チェック結果の表示 If flg Then MsgBox "『" & OptionAry(i).Caption & "』が選択されました。" Else MsgBox "『飲酒』項目が選択されていません。", vbExclamation End If End Sub
For…Next MsgBox関数 Array関数 LBound、UBound関数
表示結果
- 何も選択されていない場合
⇒ - 1つ選択されている状態
⇒
オプションボタンの初期設定
オプションボタンを設置したら、その初期値にも気を配りたいものです。通常は1つ選択された状態にしておきます。
すべて未選択、または、NULL値の状態は、ユーザーに選択操作を強制したい場面などで使用できます。
(選択されていない場合にはエラーとする)
フレームによるオプションボタンのグループ分け
オプションボタンはフレームコントロールを使用することでグループ分けが可能です。この同一グループ内で1つのオプションボタンを選択することができるようになります。このような場合はオプションボタンのチェックもグループ単位に実施する必要があります。
以下は、飲酒と喫煙についてそれぞれグループ分けしてオプションボタンを設置した例です。