エクセルで書類を作成する時、項目を選択できるようにするのがオプションボタンです。
これには2種類あり、使い方にかかわる違いもあります。
詳しいオプションボタン設置方法と使い方のコツを解説します。
こんにちは、じゅんぱ店長(@junpa33)です。
エクセルVBAコードの組み立ての中で、ワークシートにオプションボタンやチェックボックスを設置したいと思うことがあると思います。
今回は、そのオプションボタンのワークシートへの設置方法についてです。
オプションボタンのシート設置記事編成
- ActiveXとフォームの両コントロールのオプションボタンをエクセルシートに手動設置する
- フォームコントロールのオプションボタンをエクセルシートにVBA配置する
コンテンツ
ワークシートへのオプションボタン設置したい

エクセルVBAコードを使って、プログラムを作る時、
ワークシートにあるリスト(一覧表)からいずれかの値を選択して
VBAコードに変数の値として利用したいと思うことがあるでしょう。
ワークシート上に設置したボタンのクリック一つで項目を選択出来れば作業もカンタン簡単です。
今回はそんなボタンの簡単設置方法を紹介します。
2種類のオプションボタンの違いと設置方法の詳細

2種類のオプションボタンは、
「フォームコントロール」のタイプと「ActiveX」の2つのタイプがあります。
フォームコントロールのオプションボタンの場合
フォームコントロールのオプションボタンの設置
「開発」タブから「挿入」を選択します。


フォームコントロールでオプションボタンを選択します。


シートにオプションボタンを設置しました。


複数設置するのに、右クリックメニューでコピーを選択します。


ペーストで8個のオプションボタンを設置しました。

フォームコントロールのオプションボタンの設定
設置した8個のオプションボタンは、その中でどれか一つのみを選択できるようになっています。
右クリックメニューで「テキストの編集」を選択します。


例えばこのようにしてみました。

右クリックメニューで「マクロの登録」を選択します。


ダイヤログで新規作成をクリックします。


同様の作業を8個のオプションボタンに行っていきます。

Module1を開くとオプションボタンのプロシージャーが記述されています。

セルG5にオプションボタンで選択したテキスト名を表示させます。
Sub オプション1_Click()
Range("G5") = "トースト"
End Sub

オプションボタンを選択すると、指定のセルに選択名が表示されます。

オプションボタンの選択結果をボタン番号で表示させる場合
右クリックメニューで「オブジェクトの書式設定」を選択
コントロールタブで「リンクするセル」にセル番号を入力します。(セルG4)



フォームコントロールのオプションボタンの設置は、結構簡単に行うことが出来ました。
ボタン選択から後の動作のVBAコードは、目的に応じて改変させてください。
でもちょっと待ってください!
簡単で良いことばかりでもありません。
「朝食では、ハムサンドとホットコーヒー」にしたいのですが、
このボタンでは、同時に「ハムサンド」と「ホットコーヒー」を選ぶことが出来ません。
あくまでも「どれか一つ」ということが分かりました。
ActiveXコントロールのオプションボタンの場合
ActiveXコントロールのオプションボタンの設置
「開発」タブから「挿入」を選択します。


ActiveXコントロールでオプションボタンを選択します。


シートにオプションボタンを設置しました。
デザインモードが自動的に「ON」になります。


複数設置するのに、右クリックメニューでコピーを選択します。


ペーストで8個のオプションボタンを設置しました。

ActiveXコントロールのオプションボタンの設定
フォームコントロールの場合と同様に設定を行っていきます。
右クリックメニューで「プロパティ」を選択します。


「Caption」の項目で「トースト」と変更します。
同様にほか7つのオプションボタンのプロパティのCaptionの値も変更していきます。


8つのボタンのCaptionをこのように仕上げました。

「トースト」のオプションボタンを
「デザインモードON」の状態の時にダブルクリックをします。
VBEが起動しシートモジュールに(今回の場合はSheet2)空のプロシージャーが記述されます。
- ActiveXのオプションボタンの場合は、基本、シートモジュールにイベントコードが記述されます。
- シートモジュールのイベントコードは、イベントが発生したときに実行されます。ですので、オプションボタンはクリックされないとイベントコードは実行されません。


8個のオプションボタンすべてについて同様に行います。

セルG5にオプションボタンで選択したCaptionを表示させます。
Private Sub OptionButton1_Click()
Range("G5").Value = OptionButton1.Caption
End Sub

オプションボタンを選択すると、指定のセルに選択名が表示されます。
オプションボタンのプロパティの「Caption」を表示しますので、
この「Caption」を変更すれば、それに対応して自動的に表示も変更されます。

ここが オプションボタンの使い方のコツ
この部分が、「フォームコントロールのボタン」と「ActiveXのボタン」の一番の違いになります。
オプションボタンを設置したデフォルトの状態では、
設置したすべてのオプションボタンが1つのグループになっています。(グループ名は設置したシート名)
設置したそれぞれのボタンのプロパティで、グループ分けの指定をすることが出来ます。
今回のデフォルトのプロパティ「GroupName」は「Sheet2」になっています。
グループを「たべもの」と「のみもの」にグループ分けをします。


グループ(「たべもの」と「のみもの」)ごとに選択できるようになりました。
選択したボタンの「Caption」の表示位置は、
「たべもの」はセルG5
「のみもの」はセルG6 に表示するようにVBAコードの変更をしました。

ActiveXの方のオプションボタンは、ボタンのプロパティを表示することが出来るので、
より細かな設定をすることが出来ます。
特に ActiveXのオプションボタンはグループ分けを行うことが出来るので、
プログラム作りには非常に便利です。
ActiveXのオプションボタンのON・OFFによる値は、「True」か「False」を返します。
フォームコントロールと同じように、標準モジュールでイベント発生時のVBAコードを記述すると・・・
Sub OptionButton2_Click()
If Worksheets("Sheet2").OptionButton2.Value = True Then
Range("I5") = Worksheets("Sheet2").OptionButton2.Caption
Else
Range("K5") = "False"
End If
End Sub
という風にもVBAコードを記述することができます。
この方法ですと、エクセル起動時にこのコードを実行すれば、イベントを起こさなくても
「起動時のオプションボタンの状態(先回終了時のオプションボタンの状態)」を拾うことが出来ます。


オプションボタンの設置方法と使い方のコツ まとめ

ここまで、2種類のオプションボタン 「フォームコントロール」と「ActiveX」の
設置方法の詳細を説明してきました。
個人的には、エクセルVBAコードを組み立てる上では「AxtiveX」の方が遥かに有用性が高いと感じています。
プロパティなど設定できる項目が多いので、使い慣れという点では少し時間がかかるかもしれません。
ただ、後々の使い勝手を考えれば、この「ActiveX」の方を使われることをお勧めします。
エクセルVBAを独習するのに参考書は欠かせません。 参考書選びは自分に合った「相棒」にできるものを選んでいきたいです。

今回の記事はここまでです。 最後までご覧いただき有難うございました。
<記事内容についての告知>
VBAコードの記述記事においては、その記述には細心の注意をしたつもりですが、掲載のVBAコードは動作を保証するものではりません。 あくまでVBAの情報の一例として掲載しています。 掲載のVBAコードのご使用は、自己責任でご判断ください。 万一データ破損等の損害が発生しても当方では責任は負いません。