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




















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


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


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


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


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

フォームコントロールのオプションボタンの設定
設置した8個のオプションボタンは、その中でどれか一つのみを選択できるようになっています。
右クリックメニューで「テキストの編集」を選択します。
例えばこのようにしてみました。
右クリックメニューで「マクロの登録」を選択します。
ダイヤログで新規作成をクリックします。
同様の作業を8個のオプションボタンに行っていきます。
Module1を開くとオプションボタンのプロシージャーが記述されています。
フォームコントロールのオプションボタンの場合は、VBAコードが標準モジュールに記録されます。
セルG5にオプションボタンで選択したテキスト名を表示させます。
Sub オプション1_Click()
Range("G5") = "トースト"
End Sub
オプションボタンを選択すると、指定のセルに選択名が表示されます。
オプションボタンの選択結果をボタン番号で表示させる場合
右クリックメニューで「オブジェクトの書式設定」を選択
コントロールタブで「リンクするセル」にセル番号を入力します。(セルG4)
フォームコントロールのオプションボタンの設置は、結構簡単に行うことが出来ました。
ボタン選択から後の動作のVBAコードは、目的に応じて改変させてください。
でもちょっと待ってください!
簡単で良いことばかりでもありません。
「朝食では、ハムサンドとホットコーヒー」にしたいのですが、
このボタンでは、同時に「ハムサンド」と「ホットコーヒー」を選ぶことが出来ません。
あくまでも「どれか一つ」ということが分かりました。
ActiveXコントロールのオプションボタンの場合
ActiveXコントロールのオプションボタンの設置
「開発」タブから「挿入」を選択します。


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


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


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


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

ActiveXコントロールのオプションボタンの設定
フォームコントロールの場合と同様に設定を行っていきます。
右クリックメニューで「プロパティ」を選択します。
「Caption」の項目で「トースト」と変更します。
同様にほか7つのオプションボタンのプロパティのCaptionの値も変更していきます。
8つのボタンのCaptionをこのように仕上げました。
「トースト」のオプションボタンを
「デザインモードON」の状態の時にダブルクリックをします。
VBEが起動しシートモジュールに(今回の場合はSheet2)空のプロシージャーが記述されます。
POINT
- 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習得の中級クラスに達するのはそんなに難しいことではありません。
先人が行った勉強方法をあなたがそのまま利用すればよいということです。
独習のための大切な7つのポイントは、上記記事にて解説しています。
独習によるVBA習得のキーワードは、
出来るだけ多くの実例に触れること!
です。
正直、VBAの学習について自分の周りの仕事(業務)からだけ実例を得るのでは効率良い習熟は無理です。
ハッキリ言って、
本当に短い期間でVBA習得を成功させたいなら、今使っている参考書が良書かどうかを判断し、新ツールとしてオンライン学習も取り入れて行うことが、
手っ取り早く短期間習得できるというのは間違いないでしょう。
今回の記事はここまでです。 最後までご覧いただき有難うございました。