PR

【ExcelVBA】ユーザーフォームで選択式ボタンの作成(オプションボタン・ラジオボタン)

エクセルVBA-ユーザーフォームでオプションボタン作成-アイキャッチ VBA

ユーザーフォームを使用して、ユーザーに選択形式の質問を表示させて、選択されたボタンの値によって処理を分岐させる処理の作り方について説明します。

スポンサーリンク

作成するフォームのイメージ

作成するユーザーフォームのイメージはこんな感じです。
オプションボタン(ラジオボタン)で3つのボタンのうちどれか1つが選択できるようになっています。
ボタンA・B・Cのどれかを選択したあとに右下の「選択」ボタンを押すと何のボタンが選択されたのかを表示します。実務で使用するときは押されたボタンによってそのあとの処理を分岐させて使用します。

エクセルVBA-ユーザーフォームでオプションボタンの作成-完成イメージ

選択ボタンクリック後にメッセージを表示(選択されたボタンの名称を表示する)

スポンサーリンク

空のユーザーフォームを作成する

まずは空のユーザーフォームを作成していきます。
VBEの挿入タブから「ユーザーフォーム」を選択してください。

エクセルVBA-ユーザーフォームでオプションボタンの作成-ユーザーフォームの挿入

ユーザーフォームを挿入すると左のツリーの「フォーム」の下に「UserForm」が表示されて、空のユーザーフォームが中央に表示されます。

エクセルVBA-ユーザーフォームでオプションボタンの作成-ユーザーフォームの挿入後
スポンサーリンク

オプションボタンを配置する

空のユーザーフォームにオプションボタン3つとコマンドボタンを配置していきます。
ツールボックスから選択して、配置したい場所に作成していきます。

エクセルVBA-ユーザーフォームでオプションボタンの作成-ボタンの配置

オプションボタンをグループ化する

オプションボタンを並べたら、Cntrキーを押しながらすべて選択し、右クリックで「グループ化」をクリックします。

エクセルVBA-ユーザーフォームでオプションボタンの作成-オプションボタンのグループ化

ボタンのオブジェクト名とCaptionを変更する

オプションボタンの名前を変更していきます。
デフォルトは「OptionButton1~3」になっていましたが、「ボタンA~C」に変更していきます。
ボタンに表示する名称を変更するときはCaptionの値を変更します。

オブジェクト名はVBAコードで使用する名前です。
オブジェクト名も合わせてボタンと一致するような名称に変えておくと管理がしやすいです。

エクセルVBA-ユーザーフォームでオプションボタンの作成-オプションボタンの名称変更

コマンドボタン(四角いボタン)の名称は「選択」に変更しました。

エクセルVBA-ユーザーフォームでオプションボタンの作成-コマンドボタンの名称変更

作成後のユーザーフォームの状態

ボタンの配置と名前の変更が終わった状態です。
フォームの表面はこれで完成しましたが、まだコードを何も書いていないのでこれではまだ動かない状態です。

エクセルVBA-ユーザーフォームでオプションボタンの作成-ユーザーフォーム作成後
スポンサーリンク

ユーザーフォームのVBAコードを作成

フォームの表面を作成したあとは、「選択」ボタンがクリックされたときに何のボタンが選択されていたか、メッセージボックスに表示するマクロを作成していきます。

ユーザーフォームのマクロを記述するときは左のメニューでコードの表示に切り替えて書いていきます。もしくはフォーム作成画面でボタンをダブルクリックするとコード作成画面に切り替わって、ボタンをクリックしたときのマクロが自動的に追加されます。

エクセルVBA-ユーザーフォームでオプションボタンの作成-ユーザーフォームのコードの表示

ユーザーフォームのコードに「CommandButton_選択」がクリックされたときの処理を書いていきます。
IF関数でオプションボタンA~Cの状態をそれぞれ調べて、選択されている状態(True)だったら、「ボタンが選択されました」とメッセージを表示させます。

Private Sub CommandButton_選択_Click()
'選択ボタンがクリックされたときの処理

  ’選択されているボタンの名前をメッセージに表示する
    If Me.OptionButtonA.Value = True Then
    
       MsgBox "ボタンAが選択されました。"
    
       ElseIf Me.OptionButtonB.Value = True Then
       
       MsgBox "ボタンBが選択されました。"
    
       ElseIf Me.OptionButtonC.Value = True Then
    
       MsgBox "ボタンCが選択されました。"
    
    End If
    
  ’ユーザーフォームを閉じる
    Unload UserForm1

End Sub

ユーザーフォームを開くときの処理も記述しておきます。
ユーザーフォームが表示されるときに動く処理は「UserForm_Initialize」に書きます。
ここではデフォルトで選択しておくボタンなどを設定しておくと良いです。

Private Sub UserForm_Initialize()
'ユーザーフォームを開くときの処理

   'オプションボタンAを選択しておく
   Me.OptionButtonA.Value = True
   
End Sub

これでユーザーフォームの表面とボタンが押されたときに動く処理の両方が用意できました。

スポンサーリンク

シート上にユーザーフォームを立ち上げるボタンを設置

ユーザーフォームは何かのきっかけを作らないと表示できないので、今回はシート上にユーザーフォームを呼び出すためのボタンを設置しました。

「ユーザーフォームの表示」ボタンを押すとユーザーフォームが立ち上がるようにします。

エクセルVBA-ユーザーフォームでオプションボタンの作成-シート上にボタンの作成

このボタンが呼び出すマクロは標準モジュールに記述します。
ボタンが押されたらUserForm1を表示させるようにしています。

Sub 開始ボタン_Click()

  ’ユーザーフォームを表示する
    UserForm1.Show

End Sub

マクロの流れはこんな感じです。

シート上の「ユーザーフォーム表示」ボタンを押す

「Sub 開始ボタン_Click()」が動く
ユーザーフォームが呼ばれる

「Private Sub UserForm_Initialize()」が動く
デフォルト選択がされた状態でユーザーフォームが表示される

これで一連の流れが完成しました!

スポンサーリンク

一連の動作の確認

シートのボタンを押すところから一連の流れを確認していきます。

まずシート上の「ユーザーフォームの表示」ボタンをクリックします。

エクセルVBA-ユーザーフォームでオプションボタンの作成-シート上のボタン

ユーザーフォームが表示されました。
デフォルトでは「ボタンA」が選択されています。

エクセルVBA-ユーザーフォームでオプションボタンの作成-ユーザーフォーム表示

「ボタンB」を選択に変更して、「選択」ボタンをクリックします。

エクセルVBA-ユーザーフォームでオプションボタンの作成-ユーザーフォームでボタンの変更

「ボタンBが選択されました」のメッセージボックスが表示されました。

エクセルVBA-ユーザーフォームでオプションボタンの作成-選択されたボタンをメッセージに表示

今回はオプションボタンを使ったフォームの作り方の説明だったのでシンプルにここで処理は終わりですが、実務で使用する場合は、これを応用してユーザーが選択した値によってそのあとの処理を分岐させて使用することになると思います。

スポンサーリンク

ユーザーフォームの関連記事

ユーザーフォームを使った記事は↓でも紹介しています。
よかったらこちらもご覧ください。

スポンサーリンク

※コードのコピー利用について

・コードのコピーは自由におこなっていただけます。
・気を付けて作成はしていますがコードには誤りがある可能性があります。
・自身の環境で動作確認をしていますが、すべての方の環境で同様に動くことは保証できません。
・データの破損等の責任は負いかねますのでご自身の責任のもとお使いください。
・記事の内容は適宜変更することがありますのでご了承ください。

タイトルとURLをコピーしました