
動画でExcel リストボックスの使い方、UserForm_Initializeで簡単初期設定
動画版「ユーザーフォーム講座基礎編第5回」です。
この動画では、ユーザーフォームのリストボックスについて解説しています。リストボックスへデータを表示するには、リストボックスへセル範囲をRowSourceプロパティで指定したり、Addltemメソッド、Listプロパティなどを利用することができます。
RowSourceプロパティは、VBAコードでたった1行で書くことも可能です。
データの個数が変化する場合などは、コードにAddltemメソッドとFor~Nextステートメントを使って書く方が、自動的に取得するので便利です。
また配列を使ってリスト項目を取得する方法も解説しています。
(サンプルファイルは、こちらです。 リストボックスの使い方、UserForm_Initializeで簡単初期設定、サンプル05回)
コントロールの中からリストを選び、リストは右から4番目左から5番目にあります。
リストボックスというのがそれです。 これを挿入しましょう。サイズは後から変更できます。

リストボックスにラベルが必要なら、 先にラベルを入れておいてもよいかと思います。

プロパティウィンドウで、 リストボックスのオブジェクト名を 変更します。List_商品名にしておきます。

リストにしたい項目がもうすでにシート上にある場合は、
その範囲を指定してやることで、 リストに追加するということができます。
そのためにプロパティの中にRowSourceローソースというプロパティがあります。

RowSourceプロパティにデータ範囲を"Sheet1!B2:B9"と記入しました。
このRowSourceプロパティにデータ範囲を指定する方法がリストボックスにリストを追加する1番目の方法です。
記入したとたんにリストボックスにリスト項目が表示されます。

フォームにコマンドボタンを追加しオブジェクト名を変更しました。

Private Sub btn_close_Click()
Unload Me
End Sub
フォームを実行したところです。

2番目の方法は、AddItemメソッドを使ってリスト項目を追加する方法です。
これは、UserForm_Initializeコードに記述してやります。

UserForm_Initializeをコードに挿入するには、それにはフォームの何もないところで右クリックして、
コードの表示をクリックします。
次にプロシージャーボックスをクリックして
ユーザーフォームのイニシャライズを挿入してやります。

その中に、With構文を使って、以下のコードを記述します。RowSourceに書いたセル範囲は消しておきます。

Private Sub UserForm_Initialize()
With List_商品名
.AddItem "アスタキサンチン"
.AddItem "プロテイン"
.AddItem "セサミン"
End With
End Sub
1つずつアイテムを追加するのは、面倒ですので、For文を使って書き換えましょう。
これがリストボックスにアイテムを追加する3番目の方法です。
RowSourceに記述した場合と実行したときの状態は変わりませんので、他にも設定してみましょう。
With List_商品名の中でリストに関することが他にも設定できます。

Private Sub UserForm_Initialize()
Dim i As Long, LastRow As Long
Dim LastRow As Long
LastRow = Range("B" & Cells.Rows.Count).End(xlUp).Row
With List_商品名
.ForeColor = RGB(0, 0, 255)
For i = 2 To LastRow
.AddItem Range("B" & i).Value
Next i
End With
End Sub
フォームを実行すると、リストにFor文で取得した項目が表示され、文字色を青に設定しているので、反映されています。

最後の方法です。このList_商品名に配列で 商品を入れてしまおうというコードです。
たった1行のコードで追加することができます。

このように リストボックスにリストを追加する方法は複数あり、 特に皆さんが大変そうだと考えているイニシャライズで設定する方法では、配列も使えてしまいます。なんと配列が、一番簡単 ということに驚かれたのではないでしょうか?便利なリストボックスぜひ 使ってみてください。