ゆんの業務改善ブログ

①生産性向上 ②業務改善 ③自動化 について情報発信しています。VBAプログラムは本当の初心者から他のアプリケーションを呼び出して使う上級者的な使い方まで幅広いレベルで解説していきます。

VBA オプションボタン|ユーザーフォームの使い方

VBAのユーザーフォームでオプションボタンを使う方法について解説します。この記事は非エンジニアの会社員でVBAのツールでユーザーフォームの使い方を調べている方を読者に想定しています。

目次

オプションボタンを使う

まずオプションボタンとは何かについて見ていきましょう。

オプションボタンとは

オプションボタンはユーザーに選択してもらうのに使うものです。選択肢の中からひとつだけ選択するときに使います。丸の横にテキストを入れることができます。いかにも丸の部分をクリックして欲しいようなコントロールですが、テキスト部分もクリックできます。というより丸の部分とテキスト部分で一つのコントロールです。

オプションボタンのイメージ図
オプションボタンは丸の部分とテキストの部分で一つのコントロール

選択肢が2個~3個程度と比較的少ない場合に、視覚的に見やすい事が特徴です。4~10個程度の時はリストボックスやコンボボックスを使う方が良いことが多いように思います。

オプションボタンを実装する

早速実装してみましょう。

ユーザーフォームの設計

オプションボタンをユーザーフォームに挿入するには、ツールボックスから丸の中に点がある絵を選択選択します。

オプションボタンの選択の仕方
オプションボタンはツールボックスの丸の中に点がある絵を選択する

テキストボックスの時のようにユーザーフォームの上にドラッグして、形を決めます。オプションボタンは複数の選択肢からユーザーに選択してもらうことを目的として使うため、今回のサンプルでは3個のオプションボタンと実行ボタンを設置します。

あ
3つのオプションボタンと実行ボタンを設置した

フォームモジュールにイベントプロシジャを記述する

プログラム部分を実装していきます。今回はオブジェクト名を変更していないので、それぞれのオプションボタンのオブジェクト名は、

  • OptionButton1
  • OptionButton2
  • OptionButton3

となっています。実行ボタンもデフォルトのまま、「CommandButton1」です。

’このプロシジャはフォームモジュールに記述する。

Private Sub CommandButton1_Click()

    Select Case True
        Case OptionButton1.Value
            MsgBox "OptionButton1がクリックされました"
        Case OptionButton2.Value
            MsgBox "OptionButton2がクリックされました"
        Case OptionButton3.Value
            MsgBox "OptionButton3がクリックされました"
    End Select
    
    Unload Me
    
End Sub

実行してみると分かりますが、オプションボタンを複数選択することはできません。択一式の選択肢のみに使えます。そこで、次は2つの別の選択肢群があると仮定して、それぞれにオプションボタンで選択肢を作る事ります。

フレームでオプションボタンをグルーピングする

ここでフレームを使います。フレームの役割はフレーム内のコントロールを一つのグループにする事です。フレームで囲むと言うより、フレームの枠の中においたコントロールが一つのグループのイメージです。

お盆の上のコップ乗せるように、フレームの上にオプションボタンなどのコントロールをのせます。

フレームを使うと囲んだ範囲を一つのグループにする事ができる
フレームを使って6つのオプションボタンを2つにグルーピングした

ユーザーフォーム上に6個のオプションボタンが設置されています。フレームがなければ、ひとつのオプションボタンしか選択できませんが、フレームでグルーピングしている為、フレームごとにオプションボタンをひとつずつ選択することができます。

フレームによりカテゴリごとの選択をさせることができる
フレームごとに一つずつオプションボタンを選択することができる

まとめ

  • オプションボタンの目的は少ない選択肢から一つを選択させる事
  • フレームを使うことでオプションボタンをグルーピングできる


オプションボタンとフレームを使った活用方法についての解説は以上です。質問があれば、コメント欄からどうぞ!

<関連記事>