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

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

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

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

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

このように最終の行まで自動的に表示されるようになります。
ひこCells(Rows.Count, 1).End(xlUp).RowがA列の最終行を意味しています。
最終行の取得方法は複数ありますので、詳しくは以下の記事も見てみましょう。
[kanren url=”https://xcelworkblog.com/vba-saisyugyou/”]
Excelのsheet上のセルに自動で同じ文字をくっつける方法

上の画像のように、全ての文字に「商品」とくっつけたい場合は、以下のように入力することで解決します。
|
1 2 3 4 5 6 |
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の機能を使いこなすと、仕事の効率化から大きな時間短縮に繋がります。
仕事術のスキルが増えるとプライベートの時間を時間を増やすことができますので、当サイトで得た知識を是非活用していきましょう。
[enclose color=”#8fbc8f”]
【ステップ8へ進む▼▼】
[kanren url=”https://xcelworkblog.com/vba-checkbox/”]
[btn]ユーザーフォームの作り方一覧[/btn]
[/enclose]
以下のExcel記事もおすすめです。
[topic color=”orange” title=”おすすめ記事”]
[/topic]
