はじめに
VBAのユーザーフォームで、ユーザーに複数の選択肢の中から項目を選んでもらう際、「リストボックス」コントロールは非常に便利です。ドロップダウンリストとは異なり、常に複数の項目を一覧で表示できるため、選択肢の全体像が分かりやすいのが特徴です。
リストボックスに表示する項目を設定する方法はいくつかありますが、この記事では、VBAコード内で作成した**配列(Array)**を使って、リストボックスに項目を一度に設定する、最も基本的で簡単な方法を解説します。
配列からリストボックスに項目を設定するVBAサンプルコード
この設定は、ユーザーフォームが表示される直前の UserForm_Initialize
イベント内で行うのが一般的です。フォームが表示されると同時に、リストボックスに項目がセットされた状態になります。
ユーザーフォームのコード
' フォームが初期化されるときに実行されるイベント
Private Sub UserForm_Initialize()
' リストボックスに表示する項目の配列を準備
Dim itemOptions As Variant
itemOptions = Array("北海道", "東京都", "愛知県", "大阪府", "福岡県")
' Withブロックで対象のリストボックスを明示
With Me.LocationListBox
' .List プロパティに配列を代入して、リスト項目を一括で設定
.List = itemOptions
End With
End Sub
実行前の準備
- ユーザーフォームを作成します。
- フォーム上に「リストボックス」コントロールを配置します。
- リストボックスの
(Name)
プロパティをLocationListBox
に変更します。 - フォームのコードモジュールに上記の
UserForm_Initialize
プロシージャを貼り付けます。 - フォームを表示すると、リストボックスに5つの都道府県が表示されます。
コードの解説
itemOptions = Array("北海道", "東京都", ...)
Array
関数は、引数として渡された値を要素とする配列を簡単に作成するための関数です。ここでは、リストボックスに表示したい文字列のリストを配列として、変数 itemOptions
に格納しています。
.List = itemOptions
この一行が、リストボックスに項目を設定する核心部分です。
.List
: リストボックスに表示されている項目のリスト全体を管理するプロパティです。- この
.List
プロパティに、先ほど作成した配列itemOptions
を直接代入することで、配列の各要素がリストボックスの各行として一括で設定されます。
この方法は、ワークシートのセル範囲から項目を読み込む .RowSource
プロパティとは異なり、VBAコード内だけでリストの内容が完結するため、シンプルで手軽なリストを作成する場合に適しています。
まとめ
今回は、VBAの配列(Array)を使って、ユーザーフォームのリストボックスに項目を簡単に追加する方法を解説しました。
- 表示したい項目を
Array
関数で配列にする。 - 作成した配列を、リストボックスの
.List
プロパティに代入する。 - これらの処理は
UserForm_Initialize
イベントで行うのが基本。
固定の選択肢をユーザーに提示したい場合、この .List
プロパティと Array
関数を組み合わせる方法が最も手軽で分かりやすいでしょう。ぜひ、ご自身のフォーム開発にご活用ください。