
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ベーシック選択問題集をご用意しました。
標準モジュール(シート上のリストボックス(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で自動化するコードのベースが習得できる解説書」
Excel VBAエキスパートベーシックとスタンダード、どちらを選べばいいか判断が難しい…。そんな方のために、自分に合ったスタート地点がわかる無料のExcelVBAベーシック選択問題集を用意しました。