フォームにコンボボックスを配置する
Excel2016,2013マクロ 33回
コンボボックスでユーザーフォームを便利に
会員データをシートに直接入力していましたが、大量に入力することを考えて、ユーザーフォームで入力しようと考えました。
マクロ講座32回は、テキストボックスに入力したデータをワークシートに転記するまででした。
ユーザーフォームからの入力と転記が可能になると、作業がだいぶ楽になりますが、今回はコンボボックスをフォームに追加してリストから選択できるようにします。
(サンプルファイルは、こちらから
マクロ33回サンプルデータ)
ユーザーフォームの挿入
VBEを起動しすでにユーザーフォームを挿入しました。ラベルとテキストボックスまで配置しています。ここまでは復習として作業しましょう。
![フォームにコンボボックスとチェックボックスマクロ1](macro/macro33_02.png)
![フォームにコンボボックスとチェックボックスマクロ1](macro/macro33_02.png)
今回のフォームは下記の会員登録リストに登録するための、フォームとして作っています。以下の表にはすでにデータが入力されていますが、既存のリストに続けて入力していきます。そこで、このフォームに血液型を選択するためのコンボボックスとオプションボタンを追加します。
![フォームにコンボボックスとチェックボックスマクロ2](macro/macro33_03.png)
![フォームにコンボボックスとチェックボックスマクロ2](macro/macro33_03.png)
ユーザーフォームにコンボボックスを配置
ツールボックスから、コンボボックスを選択し、フォーム上の配置したい場所でドラッグします。
![フォームにコンボボックスとチェックボックスマクロ3](macro/macro33_04.png)
![フォームにコンボボックスとチェックボックスマクロ3](macro/macro33_04.png)
コンボボックスへ、リストとなるコードを入力
このコンボボックスには、血液型を選択するようにしたいので、項目は「A,B,O,AB」の4つだけです。選択項目が少ないので、コードに直接入力してしまします。
![フォームにコンボボックスとチェックボックスマクロ4](macro/macro33_05.png)
![フォームにコンボボックスとチェックボックスマクロ4](macro/macro33_05.png)
フォームやコンボボックス上でダブルクリックするか、メニューの表示からコードを選択してコンボボックスに読み込ませる項目を記入しましょう。
![フォームにコンボボックスとチェックボックスマクロ5](macro/macro33_01.png)
![フォームにコンボボックスとチェックボックスマクロ5](macro/macro33_01.png)
UserForm_Initialize
右側のドロップダウンリストからUserFormを選択、左のドロップダウンからInitializeを選択を選択します。
![フォームにコンボボックスとチェックボックスマクロ6](macro/macro33_06.png)
Private Sub UserForm_Initialize() ここに記入 End Sub
![フォームにコンボボックスとチェックボックスマクロ6](macro/macro33_06.png)
ComboBox1の名前をcombbloodに変更してから、次のコードを記入しました。名前を変更していなければ、With ComboBox1 となります。
![フォームにコンボボックスマクロ7](macro/macro33_07.png)
With combblood .AddItem "A" .AddItem "B" .AddItem "O" .AddItem "AB" End With
![フォームにコンボボックスマクロ7](macro/macro33_07.png)
UserForm_Initializeで、フォームがメモリに読み込まれた時に起動時の処理を行います。
動作を確認してみましょう。フォームを表示すると、コンボボックスに血液型が表示されていることがわかります。
![フォームにコンボボックスマクロ8](macro/macro33_08.png)
![フォームにコンボボックスマクロ8](macro/macro33_08.png)
ラベルも1つ追加して血液型としました。
![フォームにコンボボックスマクロ9](macro/macro33_09.png)
![フォームにコンボボックスマクロ9](macro/macro33_09.png)
ワークシート上データからリスト設定する場合
サンプルでは使っていませんが、リストにしたい項目が多い場合は、コードで1個ずつ追加していくより、ワークシートから読み込む方が効率がいいでしょう。コンボボックスを追加した後に、プロパティウィンドウのRowSourceにセル範囲のアドレスを記入してやります。
![フォームにコンボボックスマクロ10](macro/macro33_10.png)
![フォームにコンボボックスマクロ10](macro/macro33_10.png)
フォームを起動すると、コンボボックスに指定した範囲がリストとして表示されています。
![フォームにコンボボックスマクロ10](macro/macro33_11.png)
![フォームにコンボボックスマクロ10](macro/macro33_11.png)