機能と数式 | VBA | セミナー | オンラインソフト | お問い合わせ | その他
Top > Excel > VBA

複数選択可能なリストボックス



リストボックスで複数の項目を選択可能にするには、リストボックスのMultiSelectプロパティを設定します。標準では「fmMultiSelectSingle」が設定されています。

  • fmMultiSelectSingle
  • fmMultiSelectMulti
  • fmMultiSelectExtended

標準のfmMultiSelectSingleは、単一選択です。fmMultiSelectMultiまたはfmMultiSelectExtendedを設定すると、複数の項目を選択可能になります。両者は複数の項目を選択する方法が異なります。

【fmMultiSelectMulti】

項目をクリックすると選択できます


別の項目を選択するときもクリックだけです
CtrlキーやShiftキーは必要ありません


すでに選択している項目を再度クリックすると
選択状態が解除されます


【fmMultiSelectExtended】

クリックすると1つめの項目を選択できます


ただクリックすると、1つめの選択項目が変わるだけです


2つめ以降の項目を選択するには
CtrlキーかShiftキーを押しながらクリックします
Windowsの基本ルールと同じです


項目をドラッグして選択することもできます


選択されている項目を調べる


複数選択可能なリストボックスで、どの項目が選択されているかは、TextプロパティやValueプロパティでは調べられないので、少しめんどうな方法を使わなければなりません。



上図のように、リストボックスに4つの項目が登録されていて、そのうちの「1番目」と「3番目」が選択されているとします。リストボックスに登録されているデータは、Listプロパティに配列形式で格納されています。また、Selectedプロパティには、選択されているかどうかが配列形式で格納されています。

Listプロパティ Selectedプロパティ
 0   吉沢   選択されている   True 
 1   桜木      False 
 2   西野   選択されている   True 
 3   安藤      False 

List(0) = "吉沢"
List(1) = "桜木"
List(2) = "西野"
List(3) = "安藤"

Selected(0) = True
Selected(1) = False
Selected(2) = True
Selected(3) = False

ということです。
つまり、複数選択可能なリストボックスで、どの項目が選択されているかは、すべての項目のSelectedプロパティを調べて、Trueだったら選択されている、ということになります。

Private Sub CommandButton1_Click()
    Dim i As Long, msg As String
    For i = 0 To ListBox1.ListCount - 1
        If ListBox1.Selected(i) = True Then
            msg = msg & ListBox1.List(i) & vbCrLf
        End If
    Next i
    MsgBox msg
End Sub









このエントリーをはてなブックマークに追加