教えて!ExcelVBA!

ExcelVBAの基礎知識・書き方について紹介します。

【ExcelVBA フォーム&コントロール】フレーム内で選択されたオプションボタンを取得する方法を教えて!

構文

構文は以下の通りです。

' フレーム内の選択されたオプションボタンを取得する
Function GetSelectedOptionButton(frame As Object) As Object
    Dim optionButton As Object
    ' フレーム内のコントロールを順に確認
    For Each optionButton In frame.Controls
        If TypeName(optionButton) = "OptionButton" And optionButton.Value = True Then
            ' 選択されたオプションボタンを返す
            Set GetSelectedOptionButton = optionButton
            Exit Function
        End If
    Next optionButton
    ' 選択されたオプションボタンがない場合は Nothing を返す
    Set GetSelectedOptionButton = Nothing
End Function

解説

この構文は、指定されたフレーム内で選択されたオプションボタンを取得する関数です。フレーム内の各コントロールを確認し、OptionButton型でかつValueプロパティがTrueであるものを見つけることで選択されたオプションボタンを特定します。

使い方

この構文を使用する際には、以下の手順を追うことが必要です。
1.フォームにフレーム(Frame1など)を配置します。
2.フレーム内にオプションボタン(OptionButton1, OptionButton2など)を配置します。
3.VBAエディタを開き、適切なモジュールに上記の構文を貼り付けます。
4.必要な処理で、GetSelectedOptionButton(Frame1)のように関数を呼び出します。

プログラミング例

以下は、上記の構文を使用した簡単なプログラミング例です。例として、選択されたオプションボタンに基づいてメッセージボックスに表示するメッセージを変えるプログラムを示します。

Sub ShowMessageBasedOnOptionButton()
    Dim selectedOption As Object
    Set selectedOption = GetSelectedOptionButton(Frame1)
    If Not selectedOption Is Nothing Then
        If selectedOption.Name = "OptionButton1" Then
            MsgBox "OptionButton1が選択されました。"
        ElseIf selectedOption.Name = "OptionButton2" Then
            MsgBox "OptionButton2が選択されました。"
        End If
    Else
        MsgBox "どのオプションボタンも選択されていません。"
    End If
End Sub

このプログラムでは、GetSelectedOptionButton関数を使用して選択されたオプションボタンを取得し、それに応じて異なるメッセージを表示しています。

まとめ

フレーム内で選択されたオプションボタンを取得する方法は、コントロールのループと条件文を組み合わせることで実現されます。これを利用することで、ユーザーの選択に基づいて特定の処理を行うことが可能となります。是非活用してください。