Excel VBA 逆引き集 | グリッド表示

Excel VBA
スポンサーリンク

グリッド表示の基本

Excel VBAで「表形式のデータを見やすく表示したい」「UserFormに一覧を出したい」といった場面では ListBoxやMSFlexGridなどのグリッド表示コントロール を使います。
初心者向けに、コード例やテンプレートをかみ砕いて説明します。


基本の考え方

  • グリッド表示とは?
    表形式でデータを一覧表示する仕組み。Excelシートのように「行 × 列」で表示できる。
  • 代表的な方法:
    • ListBox(複数列表示) → 標準的で初心者向け。
    • MSFlexGrid / ListView → より本格的な表形式(環境によっては参照設定が必要)。
  • 用途:
    • データベースの検索結果を表示
    • シートの内容を一覧化
    • 選択した行を処理

テンプレ1:ListBoxで複数列を表示

UserFormに ListBox1 を配置。プロパティで ColumnCount = 3 に設定。

Private Sub UserForm_Initialize()
    ' 列数を指定
    ListBox1.ColumnCount = 3
    
    ' データを追加
    ListBox1.AddItem "001"
    ListBox1.List(ListBox1.ListCount - 1, 1) = "東京"
    ListBox1.List(ListBox1.ListCount - 1, 2) = "100"
    
    ListBox1.AddItem "002"
    ListBox1.List(ListBox1.ListCount - 1, 1) = "大阪"
    ListBox1.List(ListBox1.ListCount - 1, 2) = "200"
End Sub
VB
  • ポイント:
    • ColumnCount で列数を設定。
    • List(row, col) でセルを指定して値を入れる。

テンプレ2:シートのデータをListBoxに表示

Private Sub UserForm_Initialize()
    Dim ws As Worksheet: Set ws = Worksheets("Data")
    Dim lastRow As Long: lastRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row
    
    Dim i As Long
    ListBox1.ColumnCount = 3
    
    For i = 2 To lastRow
        ListBox1.AddItem ws.Cells(i, 1).Value
        ListBox1.List(ListBox1.ListCount - 1, 1) = ws.Cells(i, 2).Value
        ListBox1.List(ListBox1.ListCount - 1, 2) = ws.Cells(i, 3).Value
    Next i
End Sub
VB
  • ポイント:
    • シート「Data」のA~C列を読み込んで表示。
    • データベース的に使える。

テンプレ3:選択した行を取得

Private Sub CommandButton1_Click()
    Dim idx As Long
    idx = ListBox1.ListIndex
    
    If idx <> -1 Then
        MsgBox "選択された行: " & _
               ListBox1.List(idx, 0) & ", " & _
               ListBox1.List(idx, 1) & ", " & _
               ListBox1.List(idx, 2)
    Else
        MsgBox "行が選択されていません"
    End If
End Sub
VB
  • ポイント:
    • ListIndex で選択行番号を取得。
    • List(row, col) で選択された値を参照。

テンプレ4:MSFlexGridで表形式表示(上級者向け)

MSFlexGridを使う場合は「ツール → 参照設定」で Microsoft FlexGrid Control を有効化。UserFormに配置。

Private Sub UserForm_Initialize()
    With MSFlexGrid1
        .Cols = 3
        .Rows = 5
        .TextMatrix(0, 0) = "ID"
        .TextMatrix(0, 1) = "都市"
        .TextMatrix(0, 2) = "売上"
        
        .TextMatrix(1, 0) = "001"
        .TextMatrix(1, 1) = "東京"
        .TextMatrix(1, 2) = "100"
    End With
End Sub
VB
  • ポイント:
    • .Cols.Rows で列数・行数を設定。
    • .TextMatrix(row, col) でセルに値を入れる。

例題で練習

'例1:固定データをListBoxに表示
Sub Example1()
    ' → UserForm_Initialize にコードを記述
End Sub

'例2:シートのデータをListBoxに表示
Sub Example2()
    ' → UserForm_Initialize にコードを記述
End Sub

'例3:選択した行を取得
Sub Example3()
    ' → CommandButton1_Click にコードを記述
End Sub

'例4:MSFlexGridで表形式表示
Sub Example4()
    ' → UserForm_Initialize にコードを記述
End Sub
VB

初心者向けポイント

  • ListBoxは簡単にグリッド表示できるColumnCountList(row, col) を覚える。
  • シートデータを読み込むと便利 → 実務でよく使う。
  • 選択行を取得して処理 → データ選択フォームとして活用できる。
  • MSFlexGridは本格的 → 行列の見出しや表形式に強いが、参照設定が必要。

👉 この「グリッド表示テンプレ」を覚えておけば、Excel VBAで 一覧表示フォームを作り、ユーザーがデータを選択・確認できる仕組み を簡単に実装できます。

タイトルとURLをコピーしました