複数選択許可の時に選択された項目を取得する

広告

リストボックスが複数の項目を選択できる設定になっている時に、選択されている項目を取得する方法を確認します。

選択されている項目を調べるには「Selected」プロパティを使います。

各項目の選択状況を設定します。値の取得も可能です。

引数:
  object  設定するオブジェクトを指定します。
  index  0 以上で、リスト内の項目数から 1 を引いた数以下の範囲の整数
    値を指定します。
  Boolean  項目が選択されているかどうかを示します。

指定したインデックス番号の項目について、選択されているかどうかを取得したり、選択状態に設定したりします。

リストに含まれる項目全てについて順に調べていきます。リストに含まれる項目数は「ListCount」プロパティで取得できます。

コントロールのリストの項目数を返します。

引数:
  object  設定するオブジェクトを指定します。

実際の使い方としては次のようになります。

Private Sub getButton_Click()
    Dim i As Integer
    Dim val As String
    
    val = ""
    
    For i = 0 To listFoods.ListCount - 1
        If listFoods.Selected(i) = True Then
            val = val & listFoods.List(i) & " "
        End If
    Next i
    
    dispLabel.Caption = val
End Sub

サンプルプログラム

では簡単なサンプルで試してみましょう。ボタン(オブジェクト名はgetButton)とラベル(オブジェクト名はdispLabel)を追加し、ボタンに対するClickイベント処理を記述します。

Private Sub getButton_Click()
    Dim i As Integer
    Dim val As String
    
    val = ""
    
    For i = 0 To listFoods.ListCount - 1
        If listFoods.Selected(i) = True Then
            val = val & listFoods.List(i) & " "
        End If
    Next i
    
    dispLabel.Caption = val
End Sub

また呼びだすマクロは次の通りです。

testList5.bas

Sub テスト()
    Load sampleForm
    sampleForm.listFoods.AddItem "りんご"
    sampleForm.listFoods.AddItem "オレンジ"
    sampleForm.listFoods.AddItem "メロン"
    sampleForm.listFoods.MultiSelect = fmMultiSelectExtended
    sampleForm.Show
End Sub

上記マクロを実行すると次のように表示されます。

複数の項目が選択可能時の選択項目の取得

「Ctrl」キーを押しながら2つも項目をクリックして選択状態にします。

複数の項目が選択可能時の選択項目の取得

「値の取得」ボタンをクリックすると現在選択されている項目を取得してラベルに表示します。

複数の項目が選択可能時の選択項目の取得

( Written by Tatsuo Ikura )