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

 

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

 

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

 

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

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

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

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

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

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

使い方

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

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

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

・Value
選択された値を取得

ポイント

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

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

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

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

 

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

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

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

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

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

標準モジュール(シート上のリストボックス(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で自動化するコードのベースを習得したい方におすすめ!

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

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


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

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

 

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