- Home ›
- Excel VBA入門 ›
- 入力フォームの作成
オプションボタンの利用
複数の項目の中から 1 つを選択するような場合に使用するオプションボタンの利用方法について解説します。
(2022 年 06 月 17 日公開 / 2022 年 06 月 17 日更新)
オプションボタンを作成する
オプションボタンを作成する方法を見ていきます。オプションボタンを作成するにはツールボックス上で下記のアイコンをクリックします。
アイコンをクリックした後でフォーム上でマウスをドラッグしてオプションボタンを作成します。
オブジェクト名の設定
VBAから操作するにあたってオプションボタンのオブジェクト名を設定しておきます。オプションボタンのプロパティウィンドウを見てください。
オブジェクト名はプロパティウィンドウ上で直接編集が出来ます。今回はオブジェクト名を「option1」に変更します。(もう1つの方は「option2」にしました)。
オプションボタンに表示する文字列を設定する
オプションボタンに表示する文字列を設定します。文字列を設定するには「Caption」プロパティを使います。
object.Caption = String
オブジェクトの上に表示する説明テキストを設定します。 object には設定するオブジェクトを指定します。設定する値の String にはキャプションとして表示されるテキストを示す文字列式を指定します。
実際の使い方としては次のようになります。
sampleForm.toggle1.Caption = "文字列"
サンプルプログラム
では簡単なサンプルで試してみましょう。
Sub テスト() Load sampleForm sampleForm.option1.Caption = "既婚" sampleForm.option2.Caption = "未婚" sampleForm.Show End Sub
オプションボタンはどちらか1つしかチェックできません。その為、どれか1つをクリックすると今まで選択されていた項目は自動的にチェックが解除されます。
プロパティウィンドウで値を指定する
「Caption」プロパティについてはプロパティウィンドウで指定が出来ますので、値が決まっている場合は設計の時点で設定をしておくことも可能です。プロパティウィンドウの「Caption」の箇所に表示したい文字列を記述します。
オプションボタンの値を設定する
オプションボタンに保存する値を設定します。値を設定するには「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
上記マクロを実行すると次のように表示されます。
今回のサンプルでは、まず「option1」の値に「True」をセットした後で「option2」の値に「True」をセットしています。「option2」に「True」をセットした時点で先に「option1」にセットされていた値は「False」に変更されます。
プロパティウィンドウで値を指定する
「Value」プロパティについてはプロパティウィンドウで指定が出来ますので、値が決まっている場合は設計の時点で設定をしておくことも可能です。プロパティウィンドウの「Value」の箇所に「True」又は「False」の値を記述します。
オプションボタンのイベント処理
オプションボタンで用意されているイベントは以下の通りです。
イベント | 発生条件 |
---|---|
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 つを選択するような場合に使用するオプションボタンの利用方法について解説しました。
( Written by Tatsuo Ikura )

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