リストボックスの基本
Excel VBAで「複数の選択肢を一覧表示して選んでもらう」場面では UserFormのリストボックス(ListBox) を使います。
初心者向けに、コード例やテンプレートをかみ砕いて説明します。
基本の考え方
- ListBoxとは?
複数の選択肢を一覧表示できる入力コントロール。ユーザーは一つまたは複数を選択可能。 - 用途:
- 商品一覧から選択
- 複数項目を一括選択
- シートのデータをリスト化して選択
- 流れ:
- VBAエディタで「挿入 → UserForm」を選ぶ。
- UserFormに ListBox と CommandButton を配置。
- フォーム初期化時に選択肢を設定。
- ボタンを押したときに選択値を取得。
テンプレ1:固定リストを設定
UserFormに ListBox1 と CommandButton1 を配置。
Private Sub UserForm_Initialize()
ListBox1.AddItem "りんご"
ListBox1.AddItem "みかん"
ListBox1.AddItem "バナナ"
End Sub
Private Sub CommandButton1_Click()
MsgBox "選択された項目は " & ListBox1.Value & " です"
End Sub
VB- ポイント:
AddItemで選択肢を追加。ListBox1.Valueで選択された値を取得。
テンプレ2:複数選択を許可する
UserFormのプロパティで MultiSelect = fmMultiSelectMulti に設定。
Private Sub CommandButton1_Click()
Dim i As Long, result As String
For i = 0 To ListBox1.ListCount - 1
If ListBox1.Selected(i) Then
result = result & ListBox1.List(i) & ", "
End If
Next i
MsgBox "選択された項目は " & result
End Sub
VB- ポイント:
Selected(i)で選択状態を判定。- 複数選択をまとめて表示。
テンプレ3:シートのデータをリスト化
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
For i = 2 To lastRow
ListBox1.AddItem ws.Cells(i, 1).Value
Next i
End Sub
VB- ポイント:
- シート「Data」のA列をリストボックスに追加。
- データベース的に使える。
テンプレ4:選択値をシートに書き戻す
Private Sub CommandButton1_Click()
Dim ws As Worksheet: Set ws = Worksheets("Result")
ws.Range("B2").Value = ListBox1.Value
MsgBox "選択内容をシートに保存しました"
End Sub
VB- ポイント:
- 選択された値をシートに書き戻す。
テンプレ5:リストをクリアして再設定
Private Sub CommandButton2_Click()
ListBox1.Clear
ListBox1.AddItem "東京"
ListBox1.AddItem "大阪"
ListBox1.AddItem "名古屋"
End Sub
VB- ポイント:
Clearでリストを初期化。- 新しい選択肢を再設定。
例題で練習
'例1:固定リストを設定
' → UserForm_Initialize にコードを記述
'例2:複数選択を許可
' → CommandButton1_Click にコードを記述
'例3:シートのデータをリスト化
' → UserForm_Initialize にコードを記述
'例4:選択値をシートに書き戻す
' → CommandButton1_Click にコードを記述
'例5:リストをクリアして再設定
' → CommandButton2_Click にコードを記述
VB初心者向けポイント
- AddItemで選択肢追加 →
ListBox1.AddItem "りんご"。 - Clearでリスト初期化 → 再設定に便利。
- Valueで選択値取得 → 単一選択時。
- Selected(i)で判定 → 複数選択時。
- UserForm_Initializeで初期化 → フォームを開いたときにリストを準備。
- シートデータをリスト化 → 実務でよく使うパターン。
👉 この「リストボックス基本テンプレ」を覚えておけば、Excel VBAで 複数選択可能な入力フォームを作り、ユーザーに柔軟な選択方法 を提供できます。
