オプションボタンの利用

複数の項目の中から 1 つを選択するような場合に使用するオプションボタンの利用方法について解説します。

(2022 年 06 月 17 日公開 / 2022 年 06 月 17 日更新)

オプションボタンを作成する

オプションボタンを作成する方法を見ていきます。オプションボタンを作成するにはツールボックス上で下記のアイコンをクリックします。

オプションボタンを作成する(1)

アイコンをクリックした後でフォーム上でマウスをドラッグしてオプションボタンを作成します。

オプションボタンを作成する(2)

オプションボタンを作成する(3)

オブジェクト名の設定

VBAから操作するにあたってオプションボタンのオブジェクト名を設定しておきます。オプションボタンのプロパティウィンドウを見てください。

オプションボタンを作成する(4)

オブジェクト名はプロパティウィンドウ上で直接編集が出来ます。今回はオブジェクト名を「option1」に変更します。(もう1つの方は「option2」にしました)。

オプションボタンを作成する(5)

オプションボタンに表示する文字列を設定する

オプションボタンに表示する文字列を設定します。文字列を設定するには「Caption」プロパティを使います。

object.Caption = String

オブジェクトの上に表示する説明テキストを設定します。 object には設定するオブジェクトを指定します。設定する値の String にはキャプションとして表示されるテキストを示す文字列式を指定します。

実際の使い方としては次のようになります。

sampleForm.toggle1.Caption = "文字列"

サンプルプログラム

では簡単なサンプルで試してみましょう。

Sub テスト()
    Load sampleForm
    sampleForm.option1.Caption = "既婚"
    sampleForm.option2.Caption = "未婚"
    sampleForm.Show
End Sub


			

オプションボタンに表示する文字列を設定する(1)

オプションボタンはどちらか1つしかチェックできません。その為、どれか1つをクリックすると今まで選択されていた項目は自動的にチェックが解除されます。

オプションボタンに表示する文字列を設定する(2)

プロパティウィンドウで値を指定する

「Caption」プロパティについてはプロパティウィンドウで指定が出来ますので、値が決まっている場合は設計の時点で設定をしておくことも可能です。プロパティウィンドウの「Caption」の箇所に表示したい文字列を記述します。

オプションボタンに表示する文字列を設定する(3)

オプションボタンの値を設定する

オプションボタンに保存する値を設定します。値を設定するには「Value」プロパティを使います。

object.Value = String

コントロールの状態、またはその内容を設定します。object には設定するオブジェクトを指定します。設定する値の Variant にはコントロールの状態、またはその内容を指定します。

オプションボタンの場合は保存できる値として「True」又は「False」のどちらかとなります。(Nullを設定することも出来ますがTripleStateプロパティを設定する必要があります)。

「True」を設定した場合にチェックが付いた状態、「False」を設定した場合はチェックが外れた状態となります。またオプションボタンは同じフォーム上にあるオプションボタンの中でどれか1つだけ「True」の値を持つ事ができます。どれかのオプションボタンに「True」を設定すると今まで「True」が設定されていたオプションボタンは自動的に「False」となります。

実際の使い方としては次のようになります。

sampleForm.option1.Value = True

サンプルプログラム

では簡単なサンプルで試してみましょう。

Sub テスト()
    Load sampleForm
    sampleForm.option1.Caption = "既婚"
    sampleForm.option1.Value = True
    sampleForm.option2.Caption = "未婚"
    sampleForm.option2.Value = True
    sampleForm.Show
End Sub

上記マクロを実行すると次のように表示されます。

オプションボタンの値を設定する(1)

今回のサンプルでは、まず「option1」の値に「True」をセットした後で「option2」の値に「True」をセットしています。「option2」に「True」をセットした時点で先に「option1」にセットされていた値は「False」に変更されます。

プロパティウィンドウで値を指定する

「Value」プロパティについてはプロパティウィンドウで指定が出来ますので、値が決まっている場合は設計の時点で設定をしておくことも可能です。プロパティウィンドウの「Value」の箇所に「True」又は「False」の値を記述します。

オプションボタンの値を設定する(2)

オプションボタンのイベント処理

オプションボタンで用意されているイベントは以下の通りです。

イベント発生条件
Clickマウスでクリック
DblClickマウスで2 回クリック
Change値が変更される
Enter別のコントロールからフォーカスを受け取る前
Exit別のコントロールにフォーカスを移す直前
MouseDownマウスボタンを押す
MouseUpマウスボタンを離す
MouseMoveマウスボタンを動かす
KeyDownキーを押す
KeyUpキーを離す
KeyPressキーを押す
Errorコントロールでエラーが検出され、呼び出し元のプログラムにエラー情報を返せないとき
BeforeDragOverドラッグ アンド ドロップ操作の実行
BeforeDropOrPasteデータをオブジェクトにドロップしようとするか、または貼り付けようとする
BeforeUpdateコントロールのデータを変更した時の変更される前
AfterUpdateコントロールのデータを変更した後

例としてClickイベントを試してみます。

フォームのコードウィンドウを開いて次のように入力します。

Private Sub option1_Click()
    nameLabel.Caption = option1.Caption
End Sub

Private Sub option2_Click()
    nameLabel.Caption = option2.Caption
End Sub

クリックされたオプションボタンに表示されている文字列の値をラベルに表示するようにします。

呼びだすマクロは次の通りです。

Sub テスト()
    Load sampleForm
    sampleForm.nameLabel.Caption = ""
    sampleForm.option1.Caption = "既婚"
    sampleForm.option1.Value = True
    sampleForm.option2.Caption = "未婚"
    sampleForm.Show
End Sub

ではマクロを実行します。

オプションボタンのイベント処理(1)

違うオプションをクリックするとラベルに表示されている内容が変更されます。

オプションボタンのイベント処理(2)

-- --

複数の項目の中から 1 つを選択するような場合に使用するオプションボタンの利用方法について解説しました。

( Written by Tatsuo Ikura )

広告
Profile
profile_img

著者 / TATSUO IKURA

初心者~中級者の方を対象としたプログラミング方法や開発環境の構築の解説を行うサイトの運営を行っています。