前回の記事ではユーザーフォームの一つであるコンボボックスを説明しましたが、今回の記事ではユーザーフォームを使用したリストボックスの使い方について紹介します。
個人的にはコンボボックス以上にリストボックスは使う頻度が多いため、是非この記事を読んで参考にしていきましょう。
VBAのリストボックスとは?

VBAのユーザーフォームでリストボックスを使用するととても便利です。例えば上の画像のように、Excelのsheet上の文字にアレンジしてフォームに初期表示することも簡単にできます。
Yuコンボボックスと違って、最初から全部のリストが表示されていますね!
ユーザーフォームでリストボックスの使い方
今回は下の図のように、A2からA6に入力されている文字をリストボックスに反映してみます。
下準備として、A2からA6のセルには先に文字を入力しておきましょう。


まずはExcel上でAlt+11を押し、その後ユーザーフォームを挿入します。


続いて、ツールボックスの中からリストボックスを選択し、表示したい場所に左上から右下にドラッグします。


Excelのsheet上、A2からA6に入力されている場合は以下のコートで表示させることができます。
Private Sub userform_initialize()
Dim i As Long
For i = 2 To 6
ListBox1.AddItem Cells(i, 1)
Next i
End Sub
ListBox1.AddItem を使用することで、リストボックスに反映することができます。For Next関数は繰り返し行う動作であり、行数を指定するときなどに便利です。
最終行まで取得し、リストボックスに反映する
先ほどの入力方法では指定した行までとなるため、もし7行目や8行目が追加したらその都度コードを修正する必要があります。
しかしVBAの場合は便利なので、入力した行が増えても自動的に最終の行まで範囲としてくれる方法があります。
以下のようにコードを変更しましょう。
Private Sub userform_initialize()
Dim i As Long
For i = 2 To Cells(Rows.Count, 1).End(xlUp).Row
ListBox1.AddItem Cells(i, 1)
Next i
End Sub


このように最終の行まで自動的に表示されるようになります。
最終行の取得方法は複数ありますので、詳しくは以下の記事も見てみましょう。


Excelのsheet上のセルに自動で同じ文字をくっつける方法


上の画像のように、全ての文字に「商品」とくっつけたい場合は、以下のように入力することで解決します。
Private Sub userform_initialize()
Dim i As Long
For i = 2 To Cells(Rows.Count, 1).End(xlUp).Row
ListBox1.AddItem Cells(i, 1) & "商品"
Next i
End Sub
まとめ
今回はユーザーフォームのリストボックスについて紹介しました。
商品名や人物名、住所の選択など、リストボックスを使用することと便利な場合は多あります。
Excelの機能を使いこなすと、仕事の効率化から大きな時間短縮に繋がります。
仕事術のスキルが増えるとプライベートの時間を時間を増やすことができますので、当サイトで得た知識を是非活用していきましょう。
【ステップ8へ進む▼▼】













