
ラジオボタンとは1個しか選べないチェックボックスです。
簡単なので、初心者でも実装できますよ。

・VBAで選択肢を作りたい
・1個しか選べない入力欄を作りたい
・手軽に条件分岐したい
こんな悩みを解決する内容です。
今回紹介するラジオボタンでは、1個しか選択できません。
複数選択可能にしたいなら、チェックボックスを使ってください。
ユーザーフォームでラジオボタンを作成する
ユーザーフォームの作成
まずはラジオボタンユーザーフォームで作成します。
VisualBasic画面の”挿入”から”ユーザーフォーム”を選択しましょう。

すると以下のような画面が現れます。

ラジオボタンの描画
ツールボックスの中から“ラジオボタン”を選択し、ドラッグして描画します。

これで1つ目のラジオボタンができました。
続けて合計3つ作成しましょう。コピペすると簡単です。
さらに“コマンドボタン”を選択して描画しておきましょう。

書式設定
ラジオボタンとコマンドボタンの表記文字やフォントを変えることができます。
画面左下に書式を設定するリストがあるはずです。

“Caption”で表記文字を、”Font”でフォントを、”TextAlign”で文字寄せを変えられます。


これでユーザーフォームは作成完了です!!
メインプログラム(標準モジュール)を作成する
今回はプログラムを2つ作成する必要があります。
まずは、メインプログラム(標準モジュール)を作成しましょう。

Sub test()
UserForm1.Show
End Sub
“UserForm1″は先ほど作成したユーザーフォームのことです。
Showでこのフォームを表示させることができます。

ユーザーフォームの名前が”UserForm2″なら、
“UserForm2.Show”ですよ。
実行して、フォームが表示されたら成功です!!
フォームを閉じるときは×ボタンを押してください。
ユーザーフォームのプログラムを作成する
プログラム入力画面を出す
ユーザーフォームのプログラムを作るために、“コマンドボタン”をダブルクリックしましょう。

すると以下のウィンドウが現れます。

“CommandButton1_Click”と書いてありますね。
つまり、ここに書いたプログラムがコマンドボタンをクリックしたときに起動します。
ラジオボタンのチェック有無を確認するプログラム
Private Sub CommandButton1_Click()
MsgBox OptionButton1.Value
Unload Me
End Sub
OptionButton1とは今回作成したラジオボタンの1つです。

OptionButton1.Valueは、チェックありならTrueで、なしならFalseです。
“Unload Me”はユーザーフォームを閉じる処理です。
この状態でメインプログラム、つまり”UserForm1.Show”を実行してみます。

こんな感じで、ユーザーフォームが現れるはずです!!
“sampleA”の方をチェックして「実行!」を押します。

もし”sampleA”にチェックが入っていればTureを、入っていなければFalseを表示します。
ラジオボタンのキャプションを読み取る方法
Captionを使って項目名(キャプション)を読み取ります。
Private Sub CommandButton1_Click()
If OptionButton1.Value Then
MsgBox OptionButton1.Caption
End If
Unload Me
End Sub

if文で条件分岐をして、もし”sampleA”にチェックが入っていれば項目名を表示します。
これを実行し、”sampleA”にチェックを入れてボタンを押してみましょう。

このように項目名が表示されれば成功です!!
チェックしたボタンのキャプションを読み取る
さっき書いたプログラムを全ボタンに対して繰り返します。
Private Sub CommandButton1_Click()
For i = 1 To 3
If Me.Controls("OptionButton" & i).Value Then
MsgBox Me.Controls("OptionButton" & i).Caption
End If
Next i
Unload Me
End Sub

Me.Controlsは、コントロールしたい対象の指定に使います。
例えばi = 1での「”OptionButton” & i」は、OptionButton1のことです。
項目名が取得できたら、メインプログラムでif文などに利用しましょう。
ラジオボタンを使ったプログラムの例
例えば下図のように、1行目に項目名、それ以降にデータが入っているとします。
ラジオボタンを使って、選択した項目の合計値を算出してみましょう。

Private Sub CommandButton1_Click()
For i = 1 To 3
If Me.Controls("OptionButton" & i).Value Then
sampleName = Me.Controls("OptionButton" & i).Caption
End If
Next i
col = Rows(1).Find(sampleName).Column
endRow = Cells(Rows.Count, col).End(xlUp).Row
Sum = 0
For i = 2 To endRow
Sum = Sum + Cells(i, col)
Next i
MsgBox Sum
Unload Me
End Sub

項目名の取得方法は先ほどと同じです。
変数sampleNameに入れるようにしました。
Findは、指定範囲の中から()に入れた文字を検索する関数です。
詳しくはExcelマクロのFind(FindNext)で文字を検索する方法をご覧ください。
見つかればその列番号をColumnで取得して、変数colに入れます。
endRowはどこまでの行をfor文で処理するか決める変数です。
CountとEndを組み合わせることで、データの入っている最終行が取得できます。
詳しくはExcelマクロで最終行(列)を取得する方法をご覧ください。
後はfor文で2行目から足していくだけですね。

以上のように、ラジオボタンから項目名を受け取り、それをif文に入れることで実行条件を変えることができます!!
まとめ:ラジオボタンで選択肢を実装しよう
今回はラジオボタンによる選択肢の実装方法を解説しました。
1個ずつではなく複数選択可能にしたいならチェックボックスを試してみてください。
コメント