Excel VBA リストボックスにセル範囲のデータを設定する

スポンサーリンク

リストボックスにセル範囲のデータを設定する方法

リストボックスにワークシートに作成されたリストを設定するには、ListBox【リストボックス】コントロールオブジェクトのRowSourse【ロウソース】プロパティを使用します。

RowSourse【ロウソース】プロパティ

リストボックスに表示するリストのセル範囲を指定するには、ListBox【リストボックス】コントロールオブジェクトのRowSourse【ロウソース】プロパティを使用します。

RowSourse【ロウソース】プロパティの書式と設定値の説明

オブジェクト.RowSourse= セル範囲

  • オブジェクト(必須)
    リストを表示するListBox【リストボックス】オブジェクトのオブジェクト名を指定します。
  • セル範囲
    リストのセル範囲をA1形式のアドレスで設定します。(例)“sheet1!” & Raneg(“A1:A10”).Addresssheet1のA1セル~A10セルのセル範囲を指定しています。

シート「リスト」に作成したリストをListBox1に設定するコードと解説

Private Sub UserForm_Initialize()
Dim lastrow As Long
lastrow = Sheets("リスト").Cells(Rows.Count, 1).End(xlUp).Row
ListBox1.RowSourse = "リスト!" & Range("A1", "A" & lastrow).Address
End Sub
1行目【Private Sub UserForm_Initialize()】
ユーザーフォームが開く直前に実行されるUserFrom【ユーザフォーム】モジュールのInitalize【イニシャライズ】イベントプロシージャーにコードを記述します。



2行目【Dim lastrow As Long】
リストがあるシート「リスト」のリスト範囲の最終行番号を格納する変数「lastrow」を長整数型(Long)で指定します。


3行目【lastrow = Sheets(“リスト”).Cells(Rows.Count, 1).End(xlUp).Row】
リストがあるシート「リスト」のA列のセルをRows.Count【ロウズカウント】プロパティでセルの最終行番号を参照し、End【エンド】プロパティの引数をxlUp【エックスエルアップ】で上方向に指定し
セルの最終行から上方向にデータが入力されている終端セルを参照してRow【ロウ】プロパティで参照した行の行番号を取得し、変数「lastrow」に代入します。


4行目【ListBox1.RowSourse = “リスト!” & Range(“A1”, “A” & lastrow).Address】
ListBox【リストボックス】コレクションオブジェクトのRowSourse【ロウソース】プロパティを使用して
リストがあるワークシートのセル範囲を指定します。設定値は範囲のアドレスをA1形式で設定する必要があるのでAddress【アドレス】プロパティを使用してセル範囲のアドレスを設定します。


実行結果


リストボックスに複数列のワークシートのリストを設定する方法

複数列のリストボックスを作成するには、ListBox【リストボックス】コントロールオブジェクトの
ColumnCount【カラムカウント】プロパティを使用して、リストボックス内の列数を指定します。

セルのリストの1行目を列見出しとしてリストボックスに表示する場合は、ListBox【リストボックス】コントロールオブジェクトのColumnHeads【カラムヘッダーズ】プロパティにTrueを設定します。

リスト内の列の幅を設定するには、ListBox【リストボックス】コントロールオブジェクトのColumnWidths【カラムワイズ】プロパティを使用して列の幅をポイント単位で指定します。

ColumnCount【カラムカウント】プロパティ

リストボックス内に列を設定するには、ListBox【リストボックス】コントロールオブジェクトの
ColumnCount【カラムカウント】プロパティを使用します。

ColumnCount【カラムカウント】プロパティの書式と設定値の説明

オブジェクト.ColumnCount = 設定値

  • オブジェクト(必須)
    列を設定するListBox【リストボックス】コントロールオブジェクトを指定します。
  • 設定値(必須)
    列数を整数値で指定します。

ColumnHeads【カラムヘッダーズ】プロパティ

リストボックス内の先頭行に列見出しを設定するには、ListBox【リストボックス】コントロールオブジェクトのColumnHeads【カラムヘッダーズ】プロパティを使用します。

ColumnHeads【カラムヘッダーズ】プロパティの書式と設定値の説明

オブジェクト.ColumnHeads = 設定値

  • オブジェクト(必須)
    列見出しを設定するListBox【リストボックス】コントロールオブジェクトを指定します。
  • 設定値(必須)
    設定値内容
    True列見出しを設定します。
    False列見出しを設定しません。(既定値)

    ※列見出しとして表示される内容はRowSourse【ロウソース】プロパティに設定したセル範囲の1行上のセルのデータになります。


ColumnWidths【カラムワイズ】プロパティ

リストボックス内の列の幅を設定するには、ListBox【リストボックス】コントロールオブジェクトのColumnWidths【カラムワイズ】プロパティを使用します。

ColumnWidths【カラムワイズ】プロパティの書式と設定値の説明

オブジェクト.ColumnWidths = 設定値

  • オブジェクト(必須)
    列幅を設定するListBox【リストボックス】コントロールオブジェクトを指定します。
  • 設定値(必須)
    列の幅をポイント単位の数値で1列目から「;」セミコロンで区切って、文字列型(”ダブルクォーテーションで囲む)で設定します。※1ポイントは約0.35ミリで、セルの行の高さの単位と同じです。

リストボックスに複数列のワークシートのリストを設定する例

上記のリストシートのデータをリストボックスに表示するコード例

Private Sub UserForm_Initialize()
Dim lastrow As Long
lastrow = Sheets("リスト").Cells(Rows.Count, 1).End(xlUp).Row
With ListBox1
.ColumnHeads = True
.ColumnCount = 3
.ColumnWidths = "40;50;50"
.RowSource = "リスト!" & Range("A2", "C" & lastrow).Address
End With
End Sub

実行結果


リストボックスのプロパティ一覧は「リストボックスのプロパティ」をご覧ください。

以上で、リストボックスにセル範囲のデータを設定する方法につての解説を終了します。ありがとうございました。

スポンサーリンク

関連記事・広告