
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エキスパート」をご確認ください。