教えて!ExcelVBA!

ExcelVBAの基礎知識・書き方について紹介します。

【ExcelVBA フォーム&コントロール】リストボックスに表示するリストのセル範囲を設定する方法を教えて!

構文

構文は以下の通りです。

リストボックス名.RowSource = リストのセル範囲

解説

リストボックスにデータを表示するには、RowSourceプロパティを使用します。このプロパティは、リストボックスに表示するデータのソース(取得元)を指定します。リストのセル範囲には、データを取得するセル範囲を指定します。例えば、"Sheet1!A1:B10"はSheet1のA1からB10までのセル範囲を指します。

使い方

具体的な使い方を紹介します。

Private Sub UserForm_Initialize()
    ' フォームが初期化されたときに実行されるイベント
    ' リストボックスにデータをセット
    ListBox1.RowSource = "Sheet1!A2:A100"
End Sub

上記は、あるシートに生徒の名前が記載されていて、それをリストボックスに表示したい場合の例です。この例では、"Sheet1"というシートのA2からA100の生徒の名前がリストボックスに表示されます。

プログラミング例

以下に、プログラミング例を紹介します。

1.複数列のデータを表示する場合(データ件数が固定)

Private Sub UserForm_Initialize()
    ' フォームが初期化されたときに実行されるイベント
    ' リストボックスに複数列のデータをセット
    ListBox1.RowSource = "Sheet1!A1:B100"
End Sub

この例では、"Sheet1"というシートのA1からB100のデータがリストボックスに表示されます。

2.複数列のデータを表示する場合(データ件数が可変)

Private Sub UserForm_Initialize()
    ' フォームが初期化されたときに実行されるイベント
    ' リストボックスに複数列のデータをセット(データ件数が可変)
    Dim lastRow As Long
    lastRow = Sheets("Sheet1").Cells(Rows.Count, 1).End(xlUp).Row
    ListBox1.RowSource = "Sheet1!A1:B" & lastRow"
End Sub

この例では、"Sheet1"というシートのA列からB列までのデータが入力されている範囲をリストボックスに表示します。

まとめ

RowSourceプロパティは、リストボックスにデータを簡単に表示するための便利な手段です。特定のセル範囲を指定するだけで、リストボックスがデータを自動的に取得して表示することができ、データ管理が容易になります。是非活用してください。