構文
構文は以下の通りです。
Dim 選択されたオプション As String
Dim コントロール As Control
For Each コントロール In フレーム.Controls
If TypeName(コントロール) = "OptionButton" Then
If コントロール.Value = True Then
選択されたオプション = コントロール.Name
Exit For
End If
End If
Next
Dim コントロール As Control
For Each コントロール In フレーム.Controls
If TypeName(コントロール) = "OptionButton" Then
If コントロール.Value = True Then
選択されたオプション = コントロール.Name
Exit For
End If
End If
Next
解説
For Each コントロール In フレーム.Controlsは、フレーム内のすべてのコントロールを1つずつ確認するためのループです。TypeName(コントロール)は、コントロールの種類を確認し、オプションボタンかどうかを判断します。コントロール.Valueは、オプションボタンが選択されているかどうかを判定します。Exit Forは、選択されたオプションボタンが見つかったら、ループを終了します。
プログラミング例
具体的なプログラミング例を紹介します。
Dim 選択されたオプション As String
Dim コントロール As Control
' フレーム内のすべてのコントロールをチェック
For Each コントロール In フレーム1.Controls
' コントロールがオプションボタンかどうかを確認
If TypeName(コントロール) = "OptionButton" Then
' オプションボタンが選択されているか確認
If コントロール.Value = True Then
' 選択されたオプションボタン名を取得
選択されたオプション = コントロール.Name
Exit For ' 選択されたオプションが見つかったらループ終了
End If
End If
Next
' 選択されたオプションボタン名をメッセージボックスで表示
MsgBox "選択されたオプション: " & 選択されたオプション
Dim コントロール As Control
' フレーム内のすべてのコントロールをチェック
For Each コントロール In フレーム1.Controls
' コントロールがオプションボタンかどうかを確認
If TypeName(コントロール) = "OptionButton" Then
' オプションボタンが選択されているか確認
If コントロール.Value = True Then
' 選択されたオプションボタン名を取得
選択されたオプション = コントロール.Name
Exit For ' 選択されたオプションが見つかったらループ終了
End If
End If
Next
' 選択されたオプションボタン名をメッセージボックスで表示
MsgBox "選択されたオプション: " & 選択されたオプション
上記のプログラムでは、For Each コントロール In フレーム1.Controlsでフレーム内の全てのコントロールをループで確認し、オプションボタン以外のコントロールも含まれている場合があるため、TypeNameでオプションボタンかどうかを確認します。TypeName(コントロール) = "OptionButton"が、現在のコントロールがオプションボタンかどうかを判断する条件です。コントロール.Value = Trueは、オプションボタンが選択されている場合に、そのコントロールの名前を選択されたオプションに代入し、ループを終了します。
まとめ
フレーム内のオプションボタンをFor Eachループを使って簡単に確認し、選択されたオプションボタンを特定する方法を示しました。TypeNameを使ってコントロールの種類を確認することで、オプションボタン以外のコントロールを除外できます。ループを使うことで、オプションボタンが複数あっても1つの処理で対応できます。