ExcelVBA リストボックスの複数選択やフィルタリング|サンプルコード

 

ExcelVBA リストボックスの複数選択機能を使うことで、ユーザーが複数の項目を一度に選べるようになります。これにより、複数データの選択やフィルタリング、複数条件の操作が可能になります。使い方や注意点など、サンプルコードをもとに具体的に解説します。

 

2025年の目標は繰り返し作業に悩まされない年にしませんか? Excel VBAを活用した効率化がその第一歩
本サイト参考:Excel VBAで自動化するコードのベースを習得したい方におすすめの記事

Excel VBA リストボックスの複数選択利用シーン

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

1.ユーザーフォームで複数の選択肢を一括指定する。

2.フィルタリング条件や検索条件を複数指定したい。

例えば、複数の担当者や商品を選んで処理を実行するなど。

使い方

1.プロパティの設定
リストボックスの「MultiSelect」プロパティを設定します。
0 - fmMultiSelectSingle: 単一選択(デフォルト)
1 - fmMultiSelectMulti: 複数選択が可能
2 - fmMultiSelectExtended: CtrlキーやShiftキーを使用して複数選択

※ユーザーフォーム上でリストボックスを選択し、「プロパティウィンドウ」で MultiSelect を変更できます。

2. 選択された項目の取得
リストボックスの Selected プロパティを使用します。

 

Excel VBA リストボックスの複数選択ポイント

ポイント

・複数選択時の処理
Selected プロパティを使い、選択された項目をループで確認します。

・選択状態のクリア
必要に応じて選択を解除する処理を実装します。

・ユーザビリティ
ユーザーが操作しやすいよう、ガイドやヒントを表示するといいでしょう。

 

Excel VBA リストボックスの複数選択サンプルコード

Excel VBAで効率化の準備をしてみませんか?2025年をよりスムーズに過ごすための資格
基本的な文法やVBAの実践的な応用までを網羅的に学習できる方法は、ExcelVBAエキスパート資格の取得を目指すこと。学習を通して、より効率的に、着実に基礎を身につけることが可能です。資格取得すれば、スキルの証明にもなり、職場での評価アップにも繋がるため、勉強を進めるモチベーションにもなります。
本サイト参考:マクロ知識がないから「何から学べば良いのかわからない」という人におすすめの記事

ユーザーフォームでリストボックス複数選択

フォームモジュール(ユーザーフォームでリストボックス複数選択)

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

1. リストボックス(例: ListBox1 )を配置します。
リストボックスの MultiSelect プロパティを 1 - fmMultiSelectMulti に設定します。

2. コマンドボタン(例: CommandButton1 )を配置します。

Option Explicit

Private Sub UserForm_Initialize()
    ' リストボックスに項目を追加
    Me.ListBox1.AddItem "選択肢 1"
    Me.ListBox1.AddItem "選択肢 2"
    Me.ListBox1.AddItem "選択肢 3"
    Me.ListBox1.AddItem "選択肢 4"
    
    ' MultiSelectプロパティの確認
    Me.ListBox1.MultiSelect = fmMultiSelectMulti
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, vbInformation
    Else
        MsgBox "項目が選択されていません。", vbExclamation
    End If
End Sub

シート上のリストボックスで複数選択

標準モジュール(シート上のリストボックスで複数選択)

シート上に配置

シートにActiveXコントロールのリストボックス( ListBox1 )を配置し、 MultiSelect プロパティを 1 - fmMultiSelectMulti に設定します。

Option Explicit

Sub GetSelectedItems()
    Dim ws As Worksheet
    Dim listBox As Object
    
    ' シートとリストボックスを取得
    Set ws = ThisWorkbook.Sheets(1)
    Set listBox = ws.OLEObjects("ListBox1").Object
    
    ' 選択された項目を取得
    For i = 0 To listBox.ListCount - 1
        If listBox.Selected(i) Then
            selectedItems = selectedItems & listBox.List(i) & vbCrLf
        End If
    Next i
    
    ' 結果を表示
    If selectedItems <> "" Then
        MsgBox "選択された項目:" & vbCrLf & selectedItems, vbInformation
    Else
        MsgBox "項目が選択されていません。", vbExclamation
    End If
End Sub

選択状態をクリアするコード

標準モジュール(選択状態をクリアするコード)

Option Explicit

Sub ClearSelections()
    Dim ws As Worksheet
    Dim listBox As Object
    
    ' シートとリストボックスを取得
    Set ws = ThisWorkbook.Sheets(1)
    Set listBox = ws.OLEObjects("ListBox1").Object
    
    ' 選択状態を解除
    For i = 0 To listBox.ListCount - 1
        listBox.Selected(i) = False
    Next i
    
    MsgBox "選択状態をクリアしました。", vbInformation
End Sub

複数選択機能で、ユーザーに柔軟な選択肢を提供できます。選択状態をクリアする処理を実装し、操作性を向上させてください。

初心者でも使いやすいコードなので、ぜひ試してみてください。

 

Excel VBAで自動化するコードのベースを習得したい方におすすめ!

VBAエキスパート資格は、日常業務でExcelを多用し、手動作業を減らしたいと考えている方には価値あるものです。

ExcelVBAエキスパートベーシック
仕事の効率をあげるためにExcelVBAを利用する人が対象の問題集です。


ExcelVBAエキスパートスタンダード

ExcelVBAの開発を仕事にする人が対象の問題集です。

 

Excel  VBA エキスパート資格について知りたい方は、下記「Excel VBAスキルアップを目指すなら知っておきたいVBAエキスパート」をご確認ください。