複数選択許可の時に選択された項目を取得する
リストボックスが複数の項目を選択できる設定になっている時に、選択されている項目を取得する方法を確認します。
選択されている項目を調べるには「Selected」プロパティを使います。
object.Selected( index ) [= Boolean]
各項目の選択状況を設定します。値の取得も可能です。 引数: object 設定するオブジェクトを指定します。 index 0 以上で、リスト内の項目数から 1 を引いた数以下の範囲の整数 値を指定します。 Boolean 項目が選択されているかどうかを示します。
指定したインデックス番号の項目について、選択されているかどうかを取得したり、選択状態に設定したりします。
リストに含まれる項目全てについて順に調べていきます。リストに含まれる項目数は「ListCount」プロパティで取得できます。
object.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
また呼びだすマクロは次の通りです。
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 )