男女の選択肢からひとつだけ選ぶオプションボタンとは?
ボウリング場のリーグ戦の成績表でも使っているエクセルで、リーグ戦参加者の名前を登録する時に使用しています。
使用例としては、「選手登録」フォーム(ユーザーフォーム)に配置している性別をわざわざ文字で入力するのは面倒なので、「男」「女」をどちらかひとつ選ぶだけで済むように配置しています。
この「選手登録フォーム」の使い方については、「ボウリング成績表選手登録方法~LTB個人リーグ編」に記載していますので、ここでは省略します。

では、上の画像の性別の部分を実際にVisual Basic Editor(VBE)を起動して、作ってみましょう。
起動方法から説明を始めると長くなってしまうのでここでは省略します。

オプションボタン(optionbutton)を配置する
オプションボタンを配置したいユーザーフォームに、ツールボックスのオプションボタンを2個配置します。(男女1個ずつ)
見栄え良く大きさと位置を整えます。
OptionBtton1・OptionButton2という表示のままでは、使う人に何を選ぶのか伝わらないので表示を変更します。
OptionButton1をクリックすると画面左にOptionButton1のプロパティが表示されますので、7行目の項目Captionの部分が表示される名前です。
「OptionButton1」となっている名前を「男」に書き換えれば、表示名が変更できますので、同じように「OptionButton2」も「女」に書き換えましょう。
これでユーザーフォーム上のオプションボタンの準備は完了です。ただせっかくなので「性別」という枠を付けてあげると体裁が整うので、ついでに枠を付けましょう。
この枠は「フレーム」(Frame)といいます。
オプションボタンを選んだ時と同じようにツールボックスからフレームを選んでユーザーフォームに空いているスペースに配置し、名前を「Frame1」を「性別」に変更します。
次にすでに作成してある男女のオプションボタンをフレームの中に入れます。
オプションボタンがフレームの中に納まったら、再度大きさなどを好みの大きさに調整して、実際に配置したい場所に移動させます。
この時フレームを移動すれば一緒にオプションボタンもセットで動いてくれます。
これでユーザーフォームに性別を選択するオプションボタンが完成しました。
コマンドボタンで性別をセルに書き込む(VBAコード記述)
「選手登録フォーム」にもあるように、会員番号・名前・AVEと一緒に性別を【新規登録】ボタンを押すことにより、目的のセルへ書き込みます。
この新規登録ボタンに記録されているVBAコードを全て書くと長くなりオプションボタンが分かりずらくなるので、ここでは省略して、オプションボタンのみ書いています。
先ほどの画像はコマンドボタンが配置されていませんが、コマンドボタンを配置して、ここにコードを書いていきます。
If OptionButton1.Value = True Then
Range(“AD1”).Value = “1”
ElseIf OptionButton2.Value = True Then
Range(“AD1”).Value = “2”
End If
End Sub
- 「コマンドボタン1をクリックしたら実行する」というマクロの記述を開始
- もしオプションボタン1が選択されていたら
- セルAD1に半角数字で「1」を入力する
- そうではなくてもしオプションボタン2が選択されていたら
- セルAD1に半角数字で「2」を入力する
- Ifステートメント終了
- マクロ記述終了
これでオプションボタンを選択した時に男女が番号になって記述されます。
ちなみに、オプションボタンの名前(キャプション)のままで記述する時は、
とすれば、そのまま記述されます。
3つ以上オプションボタンがある時
オプションボタンを使っていて、男女を選ぶ時以外にもボウリング成績表では使います。
例えば、リーグ戦でプロボウラーも参加している時はハイゲーム(HG)やハイシリーズ(HS)などベスト3などから除外する必要があるので、集計対象外にします。
この時に、性別を男女に加えてプロを加え、3つから性別を選択させるようにして「プロ」の場合は集計対象外に指定しておけばいいからです。
その場合のVBAコードは、オプションボタン2以下にオプションボタン3を付け加えるだけです。
Range(“AD1”).Value = “2”
この後に
Range(“AD1”).Value = “3”
足すだけで3つのオプションボタンから1つを選択できるようになります。
これでオプションボタンが使えるようになりましたね。
ついでに複数選択できる、チェックボックスも使えるようになると便利ですよ!

Excel-VBAを使えば数分かかる作業がたったの1秒で終了しますよ!