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