ユーザーフォームを使った住所録で男女を選ぶボタン

ユーザーフォーム
スポンサーリンク

エクセルの入力作業を効率的に素早く終わらせようと思って、調べていたらたどり着いたVBAのユーザーフォームではありませんか?

そしてこのユーザーフォームを使いこなす為に、性別や西暦など文字で書くよりもクリックひとつで終わらせた方が間違えもないし入力が全て統一されるので簡単で楽ですよね。

その時に使うのが「オプションボタン」(OptionButton)です。

似たようなボタンにチェックボタンがありますが、違いはオプションボタンでは、性別選択でいうと、男女どちらか一方しか選べないのに対して、チェックボタンでは両方選択することもできてしまうので、使い分けしてくださいね。

ちなみにユーザーフォームって?何?または、オリジナル入力フォームについては下記をご覧くださいませ、このページはこちらの内容の続きになっています。

スポンサーリンク

VBAのオプションボタン(OptionButton)の役割とプロパティ設定

住所録入力フォーム
最初に作った住所録入力フォーム

画像のような住所録入力フォームや”和暦を西暦に変換“でも使用していますが、フレーム内に性別をひとまとめにしてオプションボタンを男性と女性の2つを配置しています。

この画像では、オプションボタンの書体を初期設定の「MS UI Gothic」から「HGP明朝E」に変更しています。

オプションボタン名を変更する

ユーザーフォームに配置した2つのオプションボタンのままだと「OptionButton1」「OptionButton2」になっていて、全く持ってオリジナリティーがないどころか、何を選択させているのか全く分からないので意味を成しません。

ちゃんと意味のある文字に変更する方法は、文字を変更したいオプションボタンをクリックすると左下にプロパティという設定項目がたくさんある画面が出てきます。

画面左に「Caption」という項目があり、右側に「OptionButton1」となっています。

表示したい文字に変更するには、この「OptionButton1」の部分をクリックすると変更できるので、お好みの文字に変更しましょう。

ここでは、オプションボタン1に「男性」、オプションボタン2に「女性」と変更すれば完成です。

文字書体・大きさを変更する

ユーザーフォームのオプションボタンの設定は、ラベルとほぼ同じなので文字書体や大きさを変更したいオプションボタンをクリックして表示されたプロパティから変更できますが、下記と重複するのでここでは省略します。

ラベルの文字色と背景色を設定する

ユーザーフォームのオプションボタンを含め基本的に初期設定の文字色は「黒色」で、背景色は「無し」になっています。

オプションボタンの主な役割は複数種類から1つを選ぶ目的で使うことが多いので、目立たせることはあまり必要としていないので、色を変更することは無いのですが、これもラベルなどと同様にオプションボタンのプロパティより設定ができます。

ここまでが書式などの基本的な設定で、コマンドボタンに選択したオプションボタンの内容をセルに書き写す設定をして使用します。

スポンサーリンク

オプションボタンが使えるように設定する

ホームページなどでよく見かける性別などを選択させるボタン。

男性をクリックすると「男性」に黒い●印が付き、女性をクリックすると「女性」に黒い●印が付いて、コマンドボタンを押すと指定したセルA1に書き写す(転記)ようにします。

VBAコード

Private Sub CommandButton1_Click()
If OptionButton1.Value = True Then
Worksheets(“sheet1”).Range(“A1”).Value = OptionButton1.Caption
ElseIf OptionButton2.Value = True Then
Worksheets(“sheet1”).Range(“A1”).Value = OptionButton2.Caption
End If
End Sub

解説
  1. コマンドボタン1がクリックされたら
  2. もし、オプションボタン1が選択されたら
  3. シート名(sheet1)のセル(A1)にオプションボタン1のキャプション名を転記する
  4. それ以外のもし、オプションボタン2が選択されたら
  5. シート名(sheet1)のセル(A1)にオプションボタン2のキャプション名を転記する
  6. Ifステートメント終了

これで、セルA1に「男性」を選べば、男性と入力され、「女性」を選べば、女性と入力されます。

とりっぷぼうる
とりっぷぼうる

ちょっとだけ応用しよう!

表示と違う文字をセルに入力する事も可能

先ほどはオプションボタン名と同じ文字をセルに入力するようなVBAコードでしたが、意外と日本語で使うとVBAコードを書いたりエクセル関数を使う時にわざわざ変換するのが不便に感じる事があります。

そこで数字に置き換えて使用することが多くなってきましたのでご紹介します。

Worksheets(“sheet1”).Range(“A1”).Value = OptionButton1.Caption

と書いてあるVBAコードの OptionButton1.Caption の部分が設定されているプロパティ名で「男性」と書いてあるので、そのままセルに「男性」と入力されます。

そこで、この OptionButton1.Caption 部分を “男”と書き換えれば、ユーザーフォーム上には「男性」のまま表示されているのですが、セルに入力される時は「男」に変わります。

さらに先ほどの数字に変えるという事は、1 とすれば入力が1になるのです。

この数字の場合は「””」が必要なくなりますのでお忘れなく!

実用性を持たせよう

オプションボタンの基本的な使い方はこれで大丈夫ですが、実際に住所録などで使うにはこのままでは使いものになりません。

なぜならば、いつも同じセルA1に男性・女性が転記されてしまう為に住所録リストになりません。

住所録リストにするならば、最後に入力した行(セル)の1つ下のセルに入力されなくてはいけないので、指定したセル(“A1”)と.Valueの間に.End(xlDown).Offset(1, 0)を付け加えてあげます。

これは「最終セルを見つけ出してその1つ下のセル」という意味です。

この.End(xlDown).Offset(1, 0)を付け加えるだけで、追加した性別が毎回最終行のセルの1つ下に転記されるので絶対に必要なのです。

出来上がりが、これです。

VBAコード

Private Sub CommandButton1_Click()
If OptionButton1.Value = True Then
Worksheets(“sheet1”).Range(“A1”).End(xlDown).Offset(1, 0).Value = OptionButton1.Caption
ElseIf OptionButton2.Value = True Then
Worksheets(“sheet1”).Range(“A1”).End(xlDown).Offset(1, 0).Value = OptionButton2.Caption
End If
End Sub

解説
  1. コマンドボタン1がクリックされたら
  2. もしオプションボタン1が選択されたら
  3. sheet1のセルA1の入力済み最終行にオプションボタン名を入力する
  4. そうではなくオプションボタン2が選択されたら
  5. sheet1のセルA1の入力済み最終行にオプションボタン名を入力する
  6. Ifステートメント終了する
  7. マクロ記録終了

そんなに難しくないですよね。実際に使っている住所録でもこの機能を付け加えています。

オプションボタンは男女選択の2つではなく和暦西暦変換で使用しているように、3つ以上でも可能です。

スポンサーリンク

ユーザーフォームでオリジナル入力画面を作る為に、この3つさえあれば、簡単なオリジナル入力画面を作ることができますよ。

次に使うのは、見栄えをよくするフレームと選択肢に使うオプションボタンとチェックボタンです。