【VBA】シートの表をユーザーフォームのリストボックスに表示する方法(複数列)

目次

はじめに

VBAのユーザーフォームで、商品一覧や顧客名簿といった、Excelシート上の表(テーブル)データをそのまま表示したい、という場面は非常に多くあります。

「リストボックス」コントロールは、複数列表示に対応しており、いくつかのプロパティを設定するだけで、ワークシート上の表をそっくりそのままフォーム上に再現することができます。

この記事では、複数列からなるシート上の表を、リストボックスに表示するための、基本的で非常に強力な方法を解説します。


シートの表をリストボックスに表示するVBAサンプルコード

この設定は、ユーザーフォームが表示される直前の UserForm_Initialize イベント内で行うのが最適です。

この例では、「ProductList」という名前のシートの A1:C10 の範囲にある商品リストを、ProductListForm というフォームの ProductListBox に表示します。

ユーザーフォームのコード

' フォームが初期化されるときに実行されるイベント
Private Sub UserForm_Initialize()
    
    Dim dataRange As Range
    
    ' 表示したいシートの表の範囲を設定
    Set dataRange = ThisWorkbook.Worksheets("ProductList").Range("A1:C10")
    
    With Me.ProductListBox
    
        ' .ColumnCount プロパティ: 表示する列数を設定
        .ColumnCount = 3
        
        ' .ColumnWidths プロパティ: 各列の幅をポイント単位で設定
        ' セミコロン(;)で区切って指定する
        .ColumnWidths = "120;80;50"
        
        ' .List プロパティ: セル範囲の値を一括でリストに代入
        .List = dataRange.Value
        
    End With
    
End Sub

実行前の準備

  1. ProductList という名前のワークシートを作成し、A1からC10の範囲に何らかの表データ(例: 商品ID, 商品名, 価格)を入力しておきます。
  2. ProductListForm という名前のユーザーフォームを作成します。
  3. フォーム上に「リストボックス」を配置し、(Name) プロパティを ProductListBox に変更します。
  4. フォームのコードモジュールに上記のコードを貼り付け、フォームを表示すると、リストボックスにシートの表がそのまま表示されます。

コード(プロパティ)の解説

.ColumnCount = 3

リストボックスに表示する列の数を指定します。この数値を、元の表の列数(この例ではA, B, Cの3列)に合わせて設定します。

.ColumnWidths = "120;80;50"

各列のを、ポイント単位の文字列で指定します。

  • "120;80;50" のように、各列の幅を**セミコロン(;)**で区切って指定します。
  • この文字列の個数が、.ColumnCount の値と一致している必要があります。
  • 全体の幅を調整しながら、最適な数値を設定してください。

.List = dataRange.Value

この一行が、シートのデータをリストボックスに流し込む核心部分です。

  • dataRange.Value: セル範囲オブジェクトの .Value プロパティは、その範囲の全てのセルの値を格納した2次元配列を返します。
  • リストボックスの .List プロパティは、この2次元配列を直接受け取ることができ、配列の内容を表形式で一括設定してくれます。

この方法は、一つずつセルをループして .AddItem メソッドで追加していくよりも、はるかに高速で効率的です。


まとめ

今回は、Excelシート上の表データを、複数列のリストボックスにそのまま表示する方法を解説しました。

  • .ColumnCount で列数を指定する。
  • .ColumnWidths で各列の幅をセミコロン区切りで指定する。
  • 表示したいセル範囲の .Value を、リストボックスの .List プロパティに直接代入する。

この3ステップで、シート上のデータをインタラクティブなフォーム上で簡単に扱うことができるようになります。データの選択や表示を行う、多くのVBAツールで活用できる基本的なテクニックです。

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

この記事を書いた人

私が勉強したこと、実践したこと、してることを書いているブログです。
主に資産運用について書いていたのですが、
最近はプログラミングに興味があるので、今はそればっかりです。

目次