【VBA】Excelマクロでラジオボタン(オプションボタン)を作る方法

VBA
スポンサーリンク

ラジオボタンを使ってマクロの処理を条件分岐することができます。

実行後の画面

今回紹介するラジオボタンでは、1個しか選択できません。

複数選択可能にしたいなら、チェックボックスを使ってください。

ユーザーフォームでラジオボタンを作成する

ユーザーフォームの作成

まずはラジオボタンをユーザーフォームで作成します。

VisualBasic画面の”挿入”から”ユーザーフォーム”を選択しましょう。

ユーザーフォームを挿入する図

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

ユーザーフォームの初期画面

ラジオボタンの描画

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

ラジオボタンの描画

これで1つ目のラジオボタンができました。

続けて合計3つ作成しましょう。コピペすると簡単です。

さらに“コマンドボタン”を選択して描画しておきましょう。

コマンドボタンの描画

書式設定

ラジオボタンとコマンドボタンの表記内容やフォントを変えることができます。

画面左下に書式を設定するリストがあるはずです。

書式設定のリスト

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

書式設定の例
書式変更後のユーザーフォーム

これでユーザーフォームは作成完了です!!

メインプログラム(標準モジュール)を作成する

今回はプログラムを2つ作成する必要があります。

まずは、メインプログラム(標準モジュール)を作成しましょう。

標準モジュールの選択
Sub test()

UserForm1.Show

End Sub

“UserForm1″は先ほど作成したユーザーフォームのことです。

Showでこのフォームを表示させることができます。

実行して、フォームが表示されたら成功です!!

フォームを閉じるときは×ボタンを押してください。

ユーザーフォームのプログラムを作成する

プログラム入力画面を出す

ユーザーフォームのプログラムを作るために、“コマンドボタン”をダブルクリックしましょう。

コマンドボタンをダブルクリック

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

コマンドボタンをクリックしたら起動するプログラム

“CommandButton1_Click”と書いてありますね。

つまり、ここに書いたプログラムがコマンドボタンをクリックしたときに起動します。

ラジオボタンのチェック有無を確認するプログラム

Private Sub CommandButton1_Click()

MsgBox OptionButton1.Value
Unload Me

End Sub

OptionButton1とは今回作成したラジオボタンの1つです。

OptionButtonの例

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文で処理するか決める変数です。
Rows.CountとEndを組み合わせると取得できます。

詳しくはExcelマクロで最終行(列)を取得する方法をご覧ください。

後はfor文で2行目から足していくだけですね。

実行後の画面

以上のように、ラジオボタンから項目名を受け取り、それをif文に入れることで実行条件を変えることができます!

まとめ:ラジオボタンで選択肢を実装しよう

今回はラジオボタンによる選択肢の実装方法を解説しました。

1個ずつではなく複数選択可能にしたいならチェックボックスを試してみてください。

コメント

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