オプションボタンをグループ化する(GroupNameプロパティ)

ユーザーフォームに設置したオプションボタンをグループ化するには GroupName プロパティを使用します。同じグループになったオプションボタンは相互に排他的になり、いずれか一つのオプションボタンだけが On となります。ここでは Excel のユーザーフォームで GroupName プロパティを使ってオプションボタンをグループ化する方法について解説します。

(Last modified: )

オプションボタンをグループ化する

ユーザーフォームに設置したオプションボタンをグループ化するには GroupName プロパティを使用します。デフォルトでは GroupName の値は空の文字列( "" )です。

オプションボタンをグループ化する(1)

明示的にグループを設定していない場合、同じユーザーフォーム内のすべてのオプションボタンは相互に排他的となるため、いずれか一つのオプションボタンだけが選択できます。(フレームの中にオプションボタンを設置した場合を除く)。

オプションボタンをグループ化する(2)

オプションボタンをグループ化する(3)

GroupName プロパティに同じ値を設定したオプションボタンは同じグループとなり、グループ内にあるいずれか一つのオプションボタンが選択できます。別のグループであれば別のグループ内にあるオプションボタンを同じように一つだけ選択できます。

オプションボタンのグループを設定するには GroupName プロパティをクリックし、グループ名として設定する文字列を入力してください。

オプションボタンをグループ化する(4)

同じグループにする別のオプションボタンの GroupName プロパティの値も、先ほど設定した値と同じものを設定します。

オプションボタンをグループ化する(5)

これで上の 2 つのオプションボタンが同じグループとなりました。下の 2 つのオプションボタンの GroupName プロパティの値にも先ほどとは違う値を設定しておきました。これで 2 つのグループができたことになります。

オプションボタンをグループ化する(6)

ユーザーフォームを表示してみると、グループ毎にグループ内のいずれか一つのオプションボタンが選択できます。

オプションボタンをグループ化する(7)

オプションボタンをグループ化する(8)

このように GroupName プロパティの値を変更することで、複数のオプションボタンをグループにまとめることができます。

GroupName プロパティはチェックボックスでも用意されています。チェックボックスは一つ一つ独立して使用することが多いですが、 GroupName プロパティを使用することで複数のチェックボックスを排他的に使用することもできます。

VBAのプログラムの中でGroupNameプロパティを設定する

プロパティウィンドウを使って GroupName プロパティの値を変更する代わりに、 VBA のコードを記述して GroupName プロパティの値を変更することもできます。

プログラムの中で GroupName プロパティを設定する場合は次の書式を使用します。

オブジェクト.GroupName [= String ]

対象のオブジェクトの GroupName プロパティに対してグループ名として設定する文字列を代入してください。同じグループ名が代入されたオプションボタンが同じグループになります。

サンプルコード

簡単なサンプルで試してみます。ユーザーフォームが表示される前に発生する Initialize イベントに対するイベントプロシージャを作成し、その中で GroupName プロパティの値を設定します。ユーザーフォームが表示される前にコントロールのプロパティの設定が行われます。

Initialize イベントに対するイベントプロシージャの使い方については「ユーザーフォームを表示する直前に発生するイベント(Initializeイベント)」を参照されてください。

ユーザーフォームのコントロールが何もないところをダブルクリックしてください。

VBAのプログラムの中でGroupNameプロパティを設定する(1)

ユーザーフォームの規定のイベントである Click イベントに対するイベントプロシージャが表示されます。

VBAのプログラムの中でGroupNameプロパティを設定する(2)

今回はユーザーフォームの Initialize イベントに対するイベントプロシージャ使用するので、コードウィンドウで次のようにイベントプロシージャを追加で記述してください。

Private Sub UserForm_Initialize()
    OptionButton1.GroupName = "Member"
    OptionButton2.GroupName = "Member"
    OptionButton3.GroupName = "Document"
    OptionButton4.GroupName = "Document"

    OptionButton1.value = True
    OptionButton3.value = True
End Sub

VBAのプログラムの中でGroupNameプロパティを設定する(3)

これでコードの記述は完了です。では実際に試してみます。「Sub/ユーザーフォームの実行」をクリックしてください。

VBAのプログラムの中でGroupNameプロパティを設定する(4)

ユーザーフォームが表示されました。それぞれのグループ毎に、同じグループにあるオプションボタンのいずれか一つを選択できます。

VBAのプログラムの中でGroupNameプロパティを設定する(5)

VBAのプログラムの中でGroupNameプロパティを設定する(6)

このように VBA のプログラムの中で GroupName プロパティの値を変更することができました。

-- --

Excel のユーザーフォームで GroupName プロパティを使ってオプションボタンをグループ化する方法について解説しました。

( Written by Tatsuo Ikura )

Profile
profile_img

著者 / TATSUO IKURA

プログラミングや開発環境構築の解説サイトを運営しています。