教えて!ExcelVBA!

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

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

構文

構文は以下の通りです。

リストボックス名.RowSource = データ範囲のセル番号.CurrentRegion.Address

解説

リストボックスにデータを表示するには、RowSourceプロパティを使用します。このプロパティは、リストボックスに表示するデータのソース(取得元)を指定します。データ範囲のセル番号には、リストボックスに表示するデータの始まりとなるセルの番号を指定します。CurrentRegion.Addressは、データ範囲のセル番号で指定したセルから始まるデータ範囲を自動的に検出し、データが入っている範囲を自動的に取得できます。

使い方

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

Private Sub UserForm_Initialize()
    ' A列からC列までのデータをリストボックスに表示
    ListBox1.RowSource = Range("A1").CurrentRegion.Address
End Sub

上記の例は、シート上にA列からC列までにデータがあり、それをリストボックスに表示したい場合となります。このコードは、フォームが初期化される際に呼び出されるUserForm_Initializeイベントで実行されます。

プログラミング例

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

例1: シート名を指定してデータを取得

Private Sub UserForm_Initialize()
    ' シート名を指定してデータを取得し、リストボックスに表示
    ListBox1.RowSource = Sheets("Sheet1").Range("A1").CurrentRegion.Address
End Sub

この例では、"Sheet1"というシートからセル範囲A1から始まるデータをリストボックスに表示します。

例2: 別のブックからデータを取得

Private Sub UserForm_Initialize()
    ' 別のブックからデータを取得し、リストボックスに表示
    Dim wb As Workbook
    Set wb = Workbooks("別のブック名.xlsx")
    ListBox1.RowSource = wb.Sheets("Sheet1").Range("A1").CurrentRegion.Address
End Sub

この例では、別のブックから指定したシートのデータをリストボックスに表示します。ブック名やシート名は適宜変更してください。

まとめ

フォーム内のリストボックスにデータを表示する方法は、構文を理解し、使い方を把握することが重要です。基本的な構文と使い方を解説したので、是非活用してください。