グリッド表示の基本
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は簡単にグリッド表示できる →
ColumnCountとList(row, col)を覚える。 - シートデータを読み込むと便利 → 実務でよく使う。
- 選択行を取得して処理 → データ選択フォームとして活用できる。
- MSFlexGridは本格的 → 行列の見出しや表形式に強いが、参照設定が必要。
👉 この「グリッド表示テンプレ」を覚えておけば、Excel VBAで 一覧表示フォームを作り、ユーザーがデータを選択・確認できる仕組み を簡単に実装できます。
