リストボックスのプロパティ

このページではリストボックスの主なプロパティについて解説します。

リストボックスは複数の項目の中から1つ以上の項目を選択してもらうためのコントロールで、
比較的使用頻度の高いコントロールです。リスト項目の複数選択については MultiSelect プロパティで設定可能ですので、適切に設定するようにしましょう。複数選択を許可した場合は、常に複数選択を意識した処理が必要になります。

リストボックスへの項目追加、削除はコンボボックスと同じですので、リンク先を参照してください。

スポンサーリンク

説明済みプロパティ

コントロールオブジェクトが異なるだけで前のページで説明した内容と同じプロパティについては説明を割愛させていただきます。以下のリンク先をご覧になってください。

※説明の中に出てくるコントロールオブジェクトは適宜読み換えてください。

複数項目の選択(MultiSelect プロパティ)

リストボックスはデフォルトの設定ではリスト内の1つの項目しか選択できません。しかし、場合によっては複数選択できるようにした方が使い勝手がよくなることもあります。リストボックス内の項目を複数選択可能にするには MultiSelect プロパティの設定を変更します。

プロパティウィンドウでの設定

MultiSelect プロパティの右端をクリックし、ドロップダウンリストから定数を選択します。

MultiSelect プロパティの値を選択
MultiSelect プロパティの値を選択

コードの記述例

'複数選択(拡張モード)に設定
ListBox1.MultiSelect = fmMultiSelectExtended
MultiSelect 定数一覧
定数 内容
fmMultiSelectSingle 0 リストボックス内の項目を1 つだけ選択できます。 (既定値)
fmMultiSelectMulti 1 リストボックス内の項目を複数選択することができます。 左クリックまはた Space キーにより、選択および選択解除ができます。
fmMultiSelectExtended 2 リストボックス内の項目を複数選択することができます。 マウスのドラッグや Shift または Ctrlキーと左クリックの組み合わせによる選択が可能です。

MultiSelect プロパティの選択モードによる選択操作の違い

  • 単一選択モード(fmMultiSelectSingle)
    “経済学部”をクリックした後、”工学部”をクリックすると、選択されるのは最後にクリックした1つの項目だけです。
    一番上を選択3番目を選択
  • 複数選択モード(fmMultiSelectMulti)
    “経済学部”をクリックした後、”工学部”をクリックすると、両方選択することができます。選択を解除する場合は、もう一度クリックするか、Space キーを押下します。
    一番上を選択1番目と3番目を選択
  • 拡張選択モード(fmMultiSelectExtended)
    クリックのみの操作は単一選択モードと同じです。マウスでドラッグすると、ドラッグした範囲の項目をすべて選択することができます。
    ドラッグですべて選択

    “経済学部”をクリックした後、Shift キーを押しながら”工学部”をクリックすると、その範囲の項目をすべて選択することができます。
    1番目から3番目を選択

    “経済学部”をクリックした後、Ctrl キーを押しながら”工学部”をクリックすると、それぞれ個別に選択することができます。
    1番目と3番目を選択

選択項目のインデックス(ListIndex、Selected プロパティ)

ListIndex プロパティ

現在選択されている項目のインデックスはコンボボックスと同様に ListIndex プロパティで取得可能です。また、このプロパティに値をインデックス値を設定することで、その値に対応する項目を選択状態にすることができます。

コードの記述例

'選択されている項目のインデックスを表示
MsgBox "ListIndex = " & ListBox1.ListIndex

表示イメージ

3番目を選択リストインデックス表示結果

Selected プロパティ

前述の ListIndex プロパティでは複数選択されている場合に対処できません。複数選択される可能性がある場合(MultiSelect プロパティが fmMultiSelectMulti または fmMultiSelectExtended の場合)、Selected プロパティを使用します。このプロパティには True / False を設定することが可能で、True を設定すると選択状態、False を設定すると未選択状態にすることができます。

構文
lbo.Selected(Index)

【戻り値】 ブール型 (Boolean)

※上記構文中の 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

 Withステートメント MsgBox関数 Mid関数

表示イメージ

  • 未選択の場合
    リスト未選択リスト未選択時の表示結果
  • 1つだけ選択されている場合
    3番目を選択1つ選択時の表示結果
  • 複数選択されている場合
    1番目と3番目を選択複数選択時の表示結果

リストボックスのスタイル(ListStyle プロパティ)

リストボックスの表示スタイルは ListStyle プロパティで設定します。この表示スタイルは MultiSelect プロパティ の設定にも影響を受け、単一選択モードかそれ以外かで表示スタイルが変わってきます。

プロパティウィンドウでの設定

ListStyle プロパティの右端をクリックし、ドロップダウンリストから希望のスタイルに対応する定数を設定します。

ListStyleプロパティに希望のスタイルに対応する定数を設定
ListStyleプロパティに希望のスタイルに対応する定数を設定

コードの記述例

'リストボックスをオプションスタイルに設定
ListBox1.ListStyle = fmListStyleOption
ListStyle定数一覧
定数 内容
fmListStylePlain 0 標準のリストボックスを表示します。
fmListStyleOption 1 各項目の先頭にオプションボタンまたはチェックボックスを表示します。 MultiSelect プロパティが単一選択モードの場合はオプションボタン、 それ以外の場合はチェックボックスが表示されます。

表示イメージ

  • 単一選択モードの場合の表示スタイル
    単一選択モードの場合の表示スタイル
  • 複数選択モードまたは、拡張選択モードの場合の表示スタイル
    複数選択モードの場合の表示スタイル

 各コントロールの概要

タイトルとURLをコピーしました