ExcelVBA リストボックスで選択可能リストを表示するコントロールの使い方

 

ExcelVBA リストボックスは、選択可能なリストを表示するコントロールで、ユーザーが1つまたは複数のアイテムを選択できます。データ入力の選択肢を絞り込む場面やユーザーの操作を簡素化する場面で使用されます。使い方や注意点など、サンプルコードをもとに具体的に解説します。

 

📌 「これ、自動化できたらラクなのに…」と思ったこと、ありませんか?
実はその作業、Excelマクロで簡単に自動化できるかもしれません。
「でもマクロって難しそう…」という方のために、完全初心者向けの入門記事をご用意しました!

👇実務で“そのまま使える”テンプレ付きで、コピペするだけ
初心者向けエクセルマクロの作り方を解説|コピペOK実務テンプレ付き

 

Excel VBA リストボックス利用シーン

以下のようなシーンで利用で表示します。

1.フォームで複数の選択肢を提示

2.動的に生成したデータをユーザーに表示

3.フィルタリングや検索の選択肢を提供

4.抽出データを簡単に選択可能にする。

 

Excel VBA リストボックス|使い方とポイント

使い方

・RowSource
リストボックスに表示する範囲を指定(Excelシートのセル範囲)

・List
VBAコードでリストのアイテムを設定

・MultiSelect
単一選択または複数選択を設定

・Value
選択された値を取得

ポイント

1. データソースの管理
データ範囲が動的に変化する場合は、コードでリストを設定すると柔軟性が高まります。

2. 複数選択時の処理
複数選択を許可する場合、選択されたアイテムをすべて処理する必要があります。

3. RowSourceの制限
RowSource プロパティを使う場合、参照するセル範囲が確実に正しいことを確認します。

4. リストのクリア
データを動的に変更する場合、リストボックスを初期化してから新しいデータを設定します。

 

Excel VBA  リストボックスサンプルコード

フォームモジュール(ユーザーフォームでランダム抽出を行い、リストボックスに結果を表示する)
ユーザーフォームに以下を配置

1. リストボックス(例: ListBox1 )を配置します。
2. コマンドボタン(例: CommandButton1 )を配置します。

Option Explicit

Private Sub UserForm_Initialize()
    Dim i As Integer
    
    ' リストボックスにデータを追加
    For i = 1 To 10
        Me.ListBox1.AddItem "選択肢 " & i
    Next i
End Sub

Private Sub CommandButton1_Click()
    Dim selectedItem As String
    
    ' 選択されたアイテムを取得
    If Me.ListBox1.ListIndex <> -1 Then
        selectedItem = Me.ListBox1.value
        MsgBox "選択された値: " & selectedItem
    Else
        MsgBox "何も選択されていません。"
    End If
End Sub

自分の実力を客観的にチェックしたい…。そんな方のために、自分に合ったスタート地点がわかる無料のExcelVBAベーシック選択問題集をご用意しました。

👉無料ExcelVBAベーシック選択問題138問

標準モジュール(シート上のリストボックス(ActiveXコントロール)を操作する)

シート上に配置

1. シートにActiveXコントロールのリストボックスを配置(例: 名前を ListBox1 )
2. セル範囲を表示するリストとして使用

Option Explicit

Sub SetupListBox()
    Dim ws As Worksheet
    Dim rng As Range
    Dim listBox As Object
    
    ' ワークシートとリストボックスの設定
    Set ws = ThisWorkbook.Sheets(1)
    Set rng = ws.Range("A1:A10") ' データ範囲
    Set listBox = UserForm1.ListBox1 ' リストボックス
    
    ' リストボックスのデータを設定
    listBox.Clear
    Dim cell As Range
    For Each cell In rng
        listBox.AddItem cell.value
    Next cell
End Sub

フォームモジュール(複数選択された値を取得するコード)

ユーザーフォームに以下を配置

リストボックスの MultiSelect プロパティを fmMultiSelectMulti に設定

Option Explicit

Private Sub UserForm_Initialize()
    Dim i As Integer
    
    ' リストボックスにデータを追加
    For i = 1 To 10
        Me.ListBox1.AddItem "選択肢 " & i
    Next i
End Sub

Private Sub CommandButton1_Click()
    Dim i As Integer
    Dim selectedItems As String
    
    ' 複数選択されたアイテムを取得
    For i = 0 To Me.ListBox1.ListCount - 1
        If Me.ListBox1.Selected(i) Then
            selectedItems = selectedItems & Me.ListBox1.List(i) & vbCrLf
        End If
    Next i
    
    If selectedItems <> "" Then
        MsgBox "選択された値: " & vbCrLf & selectedItems
    Else
        MsgBox "何も選択されていません。"
    End If
End Sub

リストボックスを使ってユーザーに選択肢を提供する。標準モジュール、フォームモジュール、ThisWorkbookで柔軟に使用可能です。

リストボックスを活用することで、ExcelVBAアプリケーションのインターフェースを直感的かつ効率的に構築できます。

 

Excel VBAエキスパートベーシックとスタンダード、どちらを選べばいいか判断が難しい…。そんな方のために、自分に合ったスタート地点がわかる無料のExcelVBAベーシック選択問題集を用意しました。

👉無料ExcelVBAベーシック選択問題138問