← コード一覧へ戻る
実務UserForm

複数選択可能なリストボックスで選択されているデータを取得する

複数選択できるリストを作り、Selectedを全行調べて選択された商品をまとめます。

実行前に確認

  • 複数選択時のListIndexは全ての選択を表しません。Valueに頼らずSelected(i)を全行確認します。
  • コードと公式仕様を照合した学習用の例です。Excel実機での実行確認は行っていません。

1サンプルコード

'【貼付先:UserForm1 のコードモジュール】
Option Explicit

Private Sub UserForm_Initialize()
    With Me.ListBox1
        .MultiSelect = fmMultiSelectMulti
        .AddItem "りんご"
        .AddItem "みかん"
        .AddItem "ぶどう"
    End With
    Me.CommandButton1.Caption = "選択を一覧表示"
End Sub

Private Sub CommandButton1_Click()
    Dim i As Long, result As String
    For i = 0 To Me.ListBox1.ListCount - 1
        If Me.ListBox1.Selected(i) Then
            result = result & CStr(Me.ListBox1.List(i, 0)) & vbCrLf
        End If
    Next i
    If Len(result) = 0 Then result = "選択はありません。"
    MsgBox result
End Sub

図で見る全行の選択状態を見る

イメージ図

複数選択できるリストを作り、Selectedを全行調べて選択された商品をまとめます。

  1. 複数選択

    りんご・ぶどうを選ぶ

  2. ループ

    Selected(i)を各行で判定

  3. 出力

    Trueの行だけ連結

各操作は、このガイドに指定されたフォームのコードで行います。

コードの処理を説明する模式図です。実際の画面や実行結果を撮影したものではありません。

使い方・実行手順を確認する5つの手順で、コードの使い方を確認できます
  1. 1

    Windows版デスクトップExcelの練習用ブックを.xlsmで保存し、Alt+F11→[挿入]→[ユーザーフォーム]で、名前がUserForm1の空のフォームを用意します。各例は別々に試します。

  2. 2

    ツールボックスからListBox1とCommandButton1を各1個を置き、各コントロールの[(Name)]が記載どおりか確認します。

  3. 3

    UserForm1を右クリック→[コードの表示]を開き、掲載コード全体をフォームのコードモジュールへ貼り付けます。標準モジュールには貼り付けません。

  4. 4

    VBEでUserForm1を選び、F5でフォームを表示します。 「りんご」と「ぶどう」をそれぞれクリックして選び、ボタンを押します。

  5. 5

    「りんご」「ぶどう」が改行区切りで表示されます。全て解除すると「選択はありません。」となります。

使っている機能の公式ドキュメント(Microsoft Learn)