オプションボタンのシートへの設置方法の詳細と使い方のコツ

VBAOptionbuttoneyecatch

エクセルで書類を作成する時、項目を選択できるようにするのがオプションボタンです。
これには2種類あり、使い方にかかわる違いもあります。
詳しいオプションボタン設置方法と使い方のコツを解説します。

こんにちは、じゅんぱ店長(@junpa33)です。

エクセルVBAコードの組み立ての中で、ワークシートにオプションボタンやチェックボックスを設置したいと思うことがあると思います。

今回は、そのオプションボタンのワークシートへの設置方法についてです。

vbaopbtnformmatoeyecatch オプションボタンをVBAコードのみでシート設置する vbaopbtnformdeleyecatch シート上のオプションボタンを削除するVBAコード vbaopbtnformsetteieyecatch オプションボタンの実用設定をVBAコード化する vbaopbtnformGroupeyecatch オプションボタン 2つのグループ化の使い分け vbaopbtnformeyecatch フォームのオプションボタンを静的・動的設置する vbasheetvariableeyecatch ワークシートを変数化する3つの手法 オブジェクト変数など vbasheethideeyecatch エクセルシートの非表示コードをパスワード管理するVBA vbasheetdeleteeyecatch エクセルシートを削除する。Deleteの使い方と注意ポイント vbasheetprotecteyecatch Excelシートを保護する。 記述方法とプロテクトされない操作 vbasheetsorteyecatch エクセルシートの並び順が思い通り!シート名一覧で自由自在 vbasheetmoveeyecatch ワークシートのブック内移動と新規ブックへの移転を分かりやすく エクセルシートの名付け・変更と取得そして一覧化するコード vbasheetspecifyeyecatch シートの選択・指定方法とその意味。簡単でも軽視してはダメ vbaaddeyecatch Excelシートを追加・挿入するAddメソッドの使い方 sheetexistanceeyecatch シートの存在を確認する2種類のコードと実務での例題 VBACheckBoxeyecatch シートへの【2種類のチェックボックス】の設置と使い方の違い VBAOptionbuttoneyecatch オプションボタンのシートへの設置方法の詳細と使い方のコツ vbabuttoneyecatch コマンドボタンをシートに設置する2つの方法 vbacleareyecatch シートクリアーを目的のメソッド別にVBA最速理解 VBACopyeyecatch シートのコピーを最速に理解!VBAコードで異なる結果

ワークシートへのオプションボタン設置したい

エクセルVBAコードを使って、プログラムを作る時、

ワークシートにあるリスト(一覧表)からいずれかの値を選択して

VBAコードに変数の値として利用したいと思うことがあるでしょう。

ワークシート上に設置したボタンのクリック一つで項目を選択出来れば作業もカンタン簡単です。

今回はそんなボタンの簡単設置方法を紹介します。

2種類のオプションボタンの違いと設置方法の詳細

2種類のオプションボタンは、

「フォームコントロール」のタイプと「ActiveX」の2つのタイプがあります。

フォームコントロールのオプションボタンの場合

フォームコントロールのオプションボタンの設置

「開発」タブから「挿入」を選択します。

vbaoptionbutton004a
矢印下001

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

vbaoptionbutton001a
矢印下001

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

vbaoptionbutton005a
矢印下001

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

vbaoptionbutton006a
矢印下001

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

vbaoptionbutton007a

フォームコントロールのオプションボタンの設定

設置した8個のオプションボタンは、その中でどれか一つのみを選択できるようになっています。

手順1
オプションボタン「テキスト」名を変更

右クリックメニューで「テキストの編集」を選択します。

vbaoptionbutton009a

矢印下001

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

vbaoptionbutton010a

手順2
イベントのマクロ登録

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

vbaoptionbutton011a

矢印下001

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

vbaoptionbutton012a

矢印下001

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

vbaoptionbutton012ba

手順3
VBEを開きます。

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

MEMO

フォームコントロールのオプションボタンの場合は、VBAコードが標準モジュールに記録されます。

vbaoptionbutton014a

手順4
プロシージャーに実行させる内容を記述します。

セルG5にオプションボタンで選択したテキスト名を表示させます。

コード

Sub オプション1_Click()
    Range("G5") = "トースト"
End Sub

vbaoptionbutton015a

手順5
オプションボタンの選択結果

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

vbaoptionbutton016a

オプションボタンの選択結果をボタン番号で表示させる場合

右クリックメニューで「オブジェクトの書式設定」を選択

コントロールタブで「リンクするセル」にセル番号を入力します。(セルG4)

vbaoptionbutton017a

矢印下001

vbaoptionbutton018a

フォームコントロールのオプションボタンの設置は、結構簡単に行うことが出来ました。

ボタン選択から後の動作のVBAコードは、目的に応じて改変させてください。

でもちょっと待ってください!

簡単で良いことばかりでもありません。

「朝食では、ハムサンドとホットコーヒー」にしたいのですが、

このボタンでは、同時に「ハムサンド」と「ホットコーヒー」を選ぶことが出来ません。

あくまでも「どれか一つ」ということが分かりました。

ActiveXコントロールのオプションボタンの場合

ActiveXコントロールのオプションボタンの設置

「開発」タブから「挿入」を選択します。

vbaoptionbutton004a
矢印下001

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

vbaoptionbutton002a
矢印下001

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

デザインモードが自動的に「ON」になります。

vbaoptionbutton019a
矢印下001

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

vbaoptionbutton020a
矢印下001

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

vbaoptionbutton021a

ActiveXコントロールのオプションボタンの設定

フォームコントロールの場合と同様に設定を行っていきます。

手順1
オプションボタン「Caption」を変更

右クリックメニューで「プロパティ」を選択します。

vbaoptionbutton022a

矢印下001

「Caption」の項目で「トースト」と変更します。

同様にほか7つのオプションボタンのプロパティのCaptionの値も変更していきます。

vbaoptionbutton023a

矢印下001

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

vbaoptionbutton024a

手順2
イベントのVBAコード記述

「トースト」のオプションボタンを

「デザインモードON」の状態の時にダブルクリックをします。

VBEが起動しシートモジュールに(今回の場合はSheet2)空のプロシージャーが記述されます。

POINT

  • ActiveXのオプションボタンの場合は、基本、シートモジュールにイベントコードが記述されます。
  • シートモジュールのイベントコードは、イベントが発生したときに実行されます。ですので、オプションボタンはクリックされないとイベントコードは実行されません。

vbaoptionbutton025a

矢印下001

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

vbaoptionbutton026a

手順3
プロシージャーに実行させる内容を記述します。

セルG5にオプションボタンで選択したCaptionを表示させます。

コード

Private Sub OptionButton1_Click()
    Range("G5").Value = OptionButton1.Caption
End Sub

vbaoptionbutton027a

手順4
オプションボタンの選択結果

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

オプションボタンのプロパティの「Caption」を表示しますので、

この「Caption」を変更すれば、それに対応して自動的に表示も変更されます。

vbaoptionbutton028a

手順5
オプションボタンのグループ分け

ここが オプションボタンの使い方のコツ

この部分が、「フォームコントロールのボタン」と「ActiveXのボタン」の一番の違いになります。

オプションボタンを設置したデフォルトの状態では、

設置したすべてのオプションボタンが1つのグループになっています。(グループ名は設置したシート名)

設置したそれぞれのボタンのプロパティで、グループ分けの指定をすることが出来ます。

今回のデフォルトのプロパティ「GroupName」は「Sheet2」になっています。

グループを「たべもの」と「のみもの」にグループ分けをします。

vbaoptionbutton029a

矢印下001

グループ(「たべもの」と「のみもの」)ごとに選択できるようになりました。

選択したボタンの「Caption」の表示位置は、

「たべもの」はセルG5

「のみもの」はセルG6 に表示するようにVBAコードの変更をしました。

vbaoptionbutton030a

ActiveXの方のオプションボタンは、ボタンのプロパティを表示することが出来るので、

より細かな設定をすることが出来ます。

特に ActiveXのオプションボタンはグループ分けを行うことが出来るので、

プログラム作りには非常に便利です。

MEMO

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コードを記述することができます。

この方法ですと、エクセル起動時にこのコードを実行すれば、イベントを起こさなくても

「起動時のオプションボタンの状態(先回終了時のオプションボタンの状態)」を拾うことが出来ます。

矢印下001

vbaoptionbutton032a

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

ここまで、2種類のオプションボタン 「フォームコントロール」と「ActiveX」の

設置方法の詳細を説明してきました。

個人的には、エクセルVBAコードを組み立てる上では「AxtiveX」の方が遥かに有用性が高いと感じています。

プロパティなど設定できる項目が多いので、使い慣れという点では少し時間がかかるかもしれません。

ただ、後々の使い勝手を考えれば、この「ActiveX」の方を使われることをお勧めします。

MEMO

ワークシートにコマンドボタンを設置する方法についてはこちらを参考にしてください。

vbabuttoneyecatch コマンドボタンをシートに設置する2つの方法

短期間でエクセルVBAの独学習得を目指したいなら

エクセルVBAを独学する独習方法は、学習者それぞれ十人十色、多種多様と思われます。

けれども、

出来るだけ効率よく学習するためには、いくつかの大切なポイントがあります。

独学でもVBA習得の中級クラスに達するのはそんなに難しいことではありません。

先人が行った勉強方法をあなたがそのまま利用すればよいということです。

独習のための大切な7つのポイントは、上記記事にて解説しています。

重要ワード

独習によるVBA習得のキーワードは、

出来るだけ多くの実例に触れること!

です。

正直、VBAの学習について自分の周りの仕事(業務)からだけ実例を得るのでは効率良い習熟は無理です。

ハッキリ言って、

本当に短い期間でVBA習得を成功させたいなら、今使っている参考書が良書かどうかを判断し、新ツールとしてオンライン学習も取り入れて行うことが、

手っ取り早く短期間習得できるというのは間違いないでしょう。

エクセルVBA最速理解で必要な知識を集めよう!

今回の記事はここまでです。   最後までご覧いただき有難うございました。

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