教えて!ExcelVBA!

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

ExcelVBAでフォーム内のリストボックスに表示するセル範囲をコードで設定する方法

構文

構文は以下の通りです。

リストボックス名.RowSource = シート名.Range(セル範囲).CurrentRegion.Address

解説

RowSourceは、フォーム内のリストボックスに表示するデータの範囲を設定します。シート名.Range(セル範囲)は、データの開始セルを指定します。このセルから、周囲のデータが自動的に範囲として認識されます。CurrentRegionは、指定したセルを中心に連続したデータが存在する範囲を自動的に選択します。Addressは、選択した範囲のセルのアドレスを取得します。このアドレスをリストボックスに表示させます。

プログラミング例

具体的なプログラミング例を紹介します。

Private Sub UserForm_Initialize()
    ' データを表示するリストボックスの設定
    ListBox1.RowSource = Sheet1.Range("A1").CurrentRegion.Address
    ' リストボックスに表示される範囲を確認
    MsgBox "表示される範囲は: " & Sheet1.Range("A1").CurrentRegion.Address
End Sub

上記のプログラムは、ListBox1.RowSourceにSheet1.Range("A1").CurrentRegion.Addressを設定して、セルA1を基点とする連続したデータをリストボックスに表示します。MsgBoxで設定された範囲を確認できるため、コードの動作を視覚的に確認することができます。

まとめ

RowSourceを使って、リストボックスに表示するセル範囲をコードで指定できます。CurrentRegionを使用すると、指定したセルを基点にデータの範囲を自動で取得できるため、効率的に複数のセルをリストに表示できます。リストボックスに自動でセル範囲を表示する実用的な方法です。