このページではリストボックスの主なプロパティについて解説します。
リストボックスは複数の項目の中から1つ以上の項目を選択してもらうためのコントロールで、
比較的使用頻度の高いコントロールです。リスト項目の複数選択については MultiSelect プロパティで設定可能ですので、適切に設定するようにしましょう。複数選択を許可した場合は、常に複数選択を意識した処理が必要になります。
リストボックスへの項目追加、削除はコンボボックスと同じですので、リンク先を参照してください。
説明済みプロパティ
コントロールオブジェクトが異なるだけで前のページで説明した内容と同じプロパティについては説明を割愛させていただきます。以下のリンク先をご覧になってください。
※説明の中に出てくるコントロールオブジェクトは適宜読み換えてください。
複数項目の選択(MultiSelect プロパティ)
リストボックスはデフォルトの設定ではリスト内の1つの項目しか選択できません。しかし、場合によっては複数選択できるようにした方が使い勝手がよくなることもあります。リストボックス内の項目を複数選択可能にするには MultiSelect プロパティの設定を変更します。
プロパティウィンドウでの設定
MultiSelect プロパティの右端をクリックし、ドロップダウンリストから定数を選択します。
コードの記述例
'複数選択(拡張モード)に設定
ListBox1.MultiSelect = fmMultiSelectExtended
定数 | 値 | 内容 |
---|---|---|
fmMultiSelectSingle | 0 | リストボックス内の項目を1 つだけ選択できます。 (既定値) |
fmMultiSelectMulti | 1 | リストボックス内の項目を複数選択することができます。 左クリックまはた Space キーにより、選択および選択解除ができます。 |
fmMultiSelectExtended | 2 | リストボックス内の項目を複数選択することができます。 マウスのドラッグや Shift または Ctrlキーと左クリックの組み合わせによる選択が可能です。 |
MultiSelect プロパティの選択モードによる選択操作の違い
- 単一選択モード(fmMultiSelectSingle)
“経済学部”をクリックした後、”工学部”をクリックすると、選択されるのは最後にクリックした1つの項目だけです。
⇒ - 複数選択モード(fmMultiSelectMulti)
“経済学部”をクリックした後、”工学部”をクリックすると、両方選択することができます。選択を解除する場合は、もう一度クリックするか、Space キーを押下します。
⇒ - 拡張選択モード(fmMultiSelectExtended)
クリックのみの操作は単一選択モードと同じです。マウスでドラッグすると、ドラッグした範囲の項目をすべて選択することができます。
“経済学部”をクリックした後、Shift キーを押しながら”工学部”をクリックすると、その範囲の項目をすべて選択することができます。
“経済学部”をクリックした後、Ctrl キーを押しながら”工学部”をクリックすると、それぞれ個別に選択することができます。
選択項目のインデックス(ListIndex、Selected プロパティ)
ListIndex プロパティ
現在選択されている項目のインデックスはコンボボックスと同様に ListIndex プロパティで取得可能です。また、このプロパティに値をインデックス値を設定することで、その値に対応する項目を選択状態にすることができます。
コードの記述例
'選択されている項目のインデックスを表示
MsgBox "ListIndex = " & ListBox1.ListIndex
表示イメージ
⇒
Selected プロパティ
前述の ListIndex プロパティでは複数選択されている場合に対処できません。複数選択される可能性がある場合(MultiSelect プロパティが fmMultiSelectMulti または fmMultiSelectExtended の場合)、Selected プロパティを使用します。このプロパティには True / False を設定することが可能で、True を設定すると選択状態、False を設定すると未選択状態にすることができます。
※上記構文中の lbo はリストボックスオブジェクトのインスタンスを表します。
コードの記述例
次の例は、複数選択可能なリストボックスにおいて、選択されているインデックスをすべて表示するものです。コマンドボタンのクリックイベントなどに記述して実行します。
Private Sub CommandButton1_Click()
Dim i As Integer
Dim msg As String
msg = ""
With ListBox1
For i = 0 To .ListCount - 1
If .Selected(i) Then
msg = msg & "," & i
End If
Next
End With
If msg = "" Then
MsgBox "選択項目なし"
Else
'一番最初のカンマを取り除いて表示する。
MsgBox "選択インデックス = " & Mid(msg, 2)
End If
End Sub
表示イメージ
- 未選択の場合
⇒ - 1つだけ選択されている場合
⇒ - 複数選択されている場合
⇒
リストボックスのスタイル(ListStyle プロパティ)
リストボックスの表示スタイルは ListStyle プロパティで設定します。この表示スタイルは MultiSelect プロパティ の設定にも影響を受け、単一選択モードかそれ以外かで表示スタイルが変わってきます。
プロパティウィンドウでの設定
ListStyle プロパティの右端をクリックし、ドロップダウンリストから希望のスタイルに対応する定数を設定します。
コードの記述例
'リストボックスをオプションスタイルに設定
ListBox1.ListStyle = fmListStyleOption
定数 | 値 | 内容 |
---|---|---|
fmListStylePlain | 0 | 標準のリストボックスを表示します。 |
fmListStyleOption | 1 | 各項目の先頭にオプションボタンまたはチェックボックスを表示します。 MultiSelect プロパティが単一選択モードの場合はオプションボタン、 それ以外の場合はチェックボックスが表示されます。 |
表示イメージ
- 単一選択モードの場合の表示スタイル
- 複数選択モードまたは、拡張選択モードの場合の表示スタイル