こんにちは、ユーキです。
今回は、リストボックスの使い方を紹介します。
リストボックスとは
複数の入力項目を一覧にして、そこから値を選択できるコントロールです。以下のような部品になります。
シンプルなリストボックス
では、さっそくリストボックスを作ってみます。
リストボックスの配置
ユーザーフォームにリストボックスを配置します。
これだけだと、選択肢が表示されません。選択肢を追加する必要があります。
選択肢をコードで設定する
コードで設定する方法になります。
ユーザーフォームが表示されるタイミングで、選択肢を設定するコードは以下になります。
Private Sub UserForm_Initialize()
ListBox1.AddItem ("A型")
ListBox1.AddItem ("B型")
ListBox1.AddItem ("O型")
ListBox1.AddItem ("AB型")
End Sub
シートの値を選択肢として設定する
シートに設定した値を選択肢として指定することも可能です。
Sheet3のA2~A5の値を選択肢に定義したい場合、以下のようなコードになります。
Private Sub UserForm_Initialize()
ListBox1.RowSource = "Sheet3!A2:A5"
End Sub
RowSourceプロパティは、プロパティ画面でも設定可能です。
見出し(タイトル)のあるリストボックス
選択肢の先頭に見出し(タイトル)は、RowSourceを指定した場合のみ設定可能です。ColumnHeads プロパティをTrueに設定します。これで、選択肢の1行上に書いた文字列が見出し(タイトル)になります。
Private Sub UserForm_Initialize()
ListBox1.RowSource = "Sheet3!A2:A5" '指定する範囲は選択肢の部分のみ
ListBox1.ColumnHeads = True
End Sub
次のような見出し(タイトル)が表示されるようになります。
複数列のリストボックス
複数列のリストボックスの作り方は2種類あります。RowSourceプロパティで指定する方法と、リストを1つずつ指定していく方法があります。
RowSourceプロパティで指定する
シンプルなリストボックスと同じですが、表示する列数に応じて、ColumnCountを設定する必要があります。
Private Sub UserForm_Initialize()
ListBox1.ColumnCount = 2
ListBox1.RowSource = "Sheet3!A2:B9"
’見出しも表示する
ListBox1.ColumnHeads = True
End Sub
見出し(タイトル)が付いた2列のリストボックスが表示されました。
2次元配列で指定する
2次元配列を作り、Columnプロパティに指定をします。
Private Sub UserForm_Initialize()
Dim myData(1, 7) As Variant
myData(0, 0) = "A型"
myData(1, 0) = "男性"
myData(0, 1) = "A型"
myData(1, 1) = "女性"
myData(0, 2) = "B型"
myData(1, 2) = "男性"
myData(0, 3) = "B型"
myData(1, 3) = "女性"
myData(0, 4) = "O型"
myData(1, 4) = "男性"
myData(0, 5) = "O型"
myData(1, 5) = "女性"
myData(0, 6) = "AB型"
myData(1, 6) = "男性"
myData(0, 7) = "AB型"
myData(1, 7) = "女性"
ListBox1.ColumnCount = 2
ListBox1.Column = myData
End Sub
これで、2列のリストボックスができます。3列、4列と増やしたい場合は、配列のサイズを大きくして、設定するデータを追加すればOKです。
Listプロパティを指定
この方法が一番汎用性が高いでしょう。AddItemで行を追加し、Listプロパティで1行ずつデータを指定する方法になります。
Private Sub UserForm_Initialize()
ListBox1.ColumnCount = 2
ListBox1.AddItem
ListBox1.List(0, 0) = "A型"
ListBox1.List(0, 1) = "男性"
ListBox1.AddItem
ListBox1.List(1, 0) = "A型"
ListBox1.List(1, 1) = "女性"
ListBox1.AddItem
ListBox1.List(2, 0) = "B型"
ListBox1.List(2, 1) = "男性"
ListBox1.AddItem
ListBox1.List(3, 0) = "B型"
ListBox1.List(3, 1) = "女性"
ListBox1.AddItem
ListBox1.List(4, 0) = "O型"
ListBox1.List(4, 1) = "男性"
ListBox1.AddItem
ListBox1.List(5, 0) = "O型"
ListBox1.List(5, 1) = "女性"
ListBox1.AddItem
ListBox1.List(6, 0) = "AB型"
ListBox1.List(6, 1) = "男性"
ListBox1.AddItem
ListBox1.List(7, 0) = "AB型"
ListBox1.List(7, 1) = "女性"
End Sub
この方法でも表示結果は、二次元配列と同じような結果が得られます。
列幅を変更する
複数列のリストボックスにした場合、列幅を変更するにはColumnWidthsプロパティを指定します。
Private Sub UserForm_Initialize()
ListBox1.ColumnCount = 2
ListBox1.AddItem
ListBox1.List(0, 0) = "A型"
ListBox1.List(0, 1) = "男性"
ListBox1.AddItem
ListBox1.List(1, 0) = "A型"
ListBox1.List(1, 1) = "女性"
ListBox1.AddItem
ListBox1.List(2, 0) = "B型"
ListBox1.List(2, 1) = "男性"
ListBox1.ColumnWidths = "100; 40"
End Sub
区切り文字は「;」となります。「ListBox1.ColumnWidths = “100; 40″」と指定した場合、1列目が100ポイント、2列目が40ポイントのカラムとなります。
単位を省略した場合はポイントとなります。㎝(センチメートル)で指定したい場合は、「ListBox1.ColumnWidths = “10cm; 4cm”」のように指定をすることも可能です。明示的にポイントを指定したい場合は「pt」を付けましょう。
まとめ
今回は、リストボックスの使い方を紹介しました。
- リストボックスは単一列~複数列の指定ができる
- 選択肢は、RowSource指定のほかコードでも設定が可能
- 見出し(タイトル)はRowSource指定時のみ設定可能
- 列幅も変更が可能
少しでもお役に立てば、幸いです。