ExcelVBA リストボックスで複数の選択肢の中から1つまたは複数を選択

 

ExcelVBA リストボックス(ListBox)は、複数の選択肢の中から1つまたは複数を選択できるコンポーネントです。選択肢を視覚的に表示して、ユーザー選択操作をしやすくします。使い方や注意点など、サンプルコードをもとに具体的に解説します。

 

「VBAスキルを証明できれば、社内評価アップにつながるかもしれません
👉 VBAを学んで社内評価を上げる方法はこちら

 

 

Excel VBA ユーザーフォームのリストボックス利用シーン

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

・選択肢のあるデータ入力フォーム(例: 製品リスト、顧客リスト)

・ユーザーが項目を選択してフィルタリングを行う検索機能

・複数のデータを一括操作するための選択ツール

Excel VBA ユーザーフォームのリストボックス|使い方とポイント

使い方

1. リストボックスの設置: 開発タブでユーザーフォームを作成し、リストボックスを配置

2. 選択肢の設定: リストボックスに選択肢を追加(コードまたはプロパティで設定)

3. 標準モジュールまたはフォームモジュールにコードを記述します。

ポイント

リストボックスに大量のデータを追加すると動作が重くなる可能性があります。

 

Excel VBA  ユーザーフォームリストボックスのサンプルコード

「VBAスキルを証明できれば、社内評価アップにつながるかもしれません
👉 VBAを学んで社内評価を上げる方法はこちら

 

標準モジュール(ユーザーフォームを表示します)

Option Explicit

Sub ShowUserForm()
    UserForm1.Show
End Sub

フォームモジュール(リストボックスの操作と選択結果の処理)

Option Explicit

Private Sub UserForm_Initialize()
    ' リストボックスに選択肢を追加
    With Me.ListBox1
        .AddItem "選択肢1"
        .AddItem "選択肢2"
        .AddItem "選択肢3"
    End With
End Sub

フォームモジュール(単一選択の結果を取得)

Private Sub CommandButton1_Click()
    Dim selectedItem As String

    ' リストボックスの選択項目を取得
    selectedItem = Me.ListBox1.Value

    ' 選択チェック
    If selectedItem = "" Then
        MsgBox "選択肢を選んでください。", vbExclamation
        Exit Sub
    End If

    ' 結果をシートに反映
    ThisWorkbook.Sheets("Sheet1").Range("A1").Value = selectedItem

    ' フォームを閉じる
    Unload Me
End Sub

フォームモジュール( 複数選択の結果を取得)

Private Sub CommandButton2_Click()
    Dim i As Integer
    Dim selectedItems As String

    ' 選択された項目を取得
    With Me.ListBox1
        For i = 0 To .ListCount ・1
            If .Selected(i) Then
                selectedItems = selectedItems & .List(i) & vbNewLine
            End If
        Next i
    End With

    ' 結果を表示またはシートに書き込む
    If selectedItems = "" Then
        MsgBox "選択肢を選んでください。", vbExclamation
    Else
        MsgBox "選択された項目:" & vbNewLine & selectedItems, vbInformation
    End If
End Sub

リストボックスは動的に選択肢を追加できるため、柔軟なフォーム作成が可能です。複数選択が必要な場合は、 MultiSelect プロパティを fmMultiSelectMulti に設定します。

サンプルコードをコピーして実行すれば、初心者でも簡単に動作確認ができます。

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

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

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


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

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

 

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

 

「VBAスキルを証明できれば、社内評価アップにつながるかもしれません