MENU
カテゴリー
Yu
Excelに関する記事を配信中!
どうぞゆっくり見ていってください!

VBAのユーザーフォームでリストボックスの使い方

VBA_リストボックス

前回の記事ではユーザーフォームの一つであるコンボボックスを説明しましたが、今回の記事ではユーザーフォームを使用したリストボックスの使い方について紹介します。

個人的にはコンボボックス以上にリストボックスは使う頻度が多いため、是非この記事を読んで参考にしていきましょう。

目次

VBAのリストボックスとは?

VBAのリストボックス4

VBAのユーザーフォームでリストボックスを使用するととても便利です。例えば上の画像のように、Excelのsheet上の文字にアレンジしてフォームに初期表示することも簡単にできます。

Yu

コンボボックスと違って、最初から全部のリストが表示されていますね!

ユーザーフォームでリストボックスの使い方

今回は下の図のように、A2からA6に入力されている文字をリストボックスに反映してみます。

下準備として、A2からA6のセルには先に文字を入力しておきましょう。

VBAのリストボックス2

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

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

VBAのリストボックス1

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
VBAのリストボックス3

このように最終の行まで自動的に表示されるようになります。

Cells(Rows.Count, 1).End(xlUp).RowがA列の最終行を意味しています。

 

最終行の取得方法は複数ありますので、詳しくは以下の記事も見てみましょう。

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

VBAのリストボックス4

上の画像のように、全ての文字に「商品」とくっつけたい場合は、以下のように入力することで解決します。

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へ進む▼▼】

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次