Excel VBA 逆引き集 | リストボックス

Excel VBA
スポンサーリンク

リストボックスの基本

Excel VBAで「複数の選択肢を一覧表示して選んでもらう」場面では UserFormのリストボックス(ListBox) を使います。
初心者向けに、コード例やテンプレートをかみ砕いて説明します。


基本の考え方

  • ListBoxとは?
    複数の選択肢を一覧表示できる入力コントロール。ユーザーは一つまたは複数を選択可能。
  • 用途:
    • 商品一覧から選択
    • 複数項目を一括選択
    • シートのデータをリスト化して選択
  • 流れ:
    1. VBAエディタで「挿入 → UserForm」を選ぶ。
    2. UserFormに ListBoxCommandButton を配置。
    3. フォーム初期化時に選択肢を設定。
    4. ボタンを押したときに選択値を取得。

テンプレ1:固定リストを設定

UserFormに ListBox1CommandButton1 を配置。

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で 複数選択可能な入力フォームを作り、ユーザーに柔軟な選択方法 を提供できます。

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