2.2 VBAで値を参照するには
VBAを使って、コンボボックスやリストボックスから値を取得したり、逆に一覧から選択したりする方法です。

コンボボックスではプロパティ「Value」を使って値の取得と行の選択行い、リストボックスではプロパティ「ItemsSelected」で選択した行情報の取得、「Selected」で行の選択を行います。
表示している(選択できる)行数を調べるときは、どちらも同じくプロパティ「ListCount」を参照します。
コンボボックスの値を取得・設定するには
コンボボックスから値を取得するとき、または値を設定するときは、コンボボックスのプロパティ「Value」を使います。注意することは、値を取得するときはプロパティ「連結列」で指定した列の値を取得するという点です。表示されている内容(※)ではありません。 ※表示している列を連結列にしているときは別


なお、プロパティ「Value」へ値をセットしたときは、セットした値と等しい行が選択されます。

リストボックスに何行のデータが表示されているかを調べるときは、リストボックスのプロパティ「ListCount」で参照してください。

プロパティ
用途
Value
値の取得と、行の選択。
ListCount
表示している行数。

    'コンボボックス「cmbPrefCode」を参照する場合の記述

    ':変数lngPrefCodeへコンボボックスの値を保存
    lngPrefCode = Me.cmbPrefCode.Value

    'コンボボックス「cmbPrefCode」を選択する(値を設定する)場合の記述

    ':7は福島県(を選択)
    Me.cmbPrefCode.Value = 7

    'コンボボックスへ表示しているリストの行数を知る場合

    MsgBox Me.cmbPrefCode.ListCount
リストボックスの値を取得・設定するには
リストボックスから値を取得するときは、リストボックスのプロパティ「ItemsSelected.Count」で選択している行の数、プロパティ「ItemsSelected.Item(n)」で選択している行の番号を取得、「ItemData(n)」で選択した行の値を参照します。ちなみに、選択した全ての行の値を取得するときは、ItemsSelectedFor〜Each〜In〜Nextを使うと簡単です。(例1)

なお、リストボックスに何行のデータが表示されているかを調べるときは、リストボックスのプロパティ「ListCount」で参照してください。(例2)

プロパティ
用途
ItemsSelected
選択している行全体。
ItemsSelected.Count
選択している行の数。
ItemsSelected.Item(n)
選択している行の番号。インデックス(n)は0からの連番で最大値はItemsSelected.Count - 1
ItemData(n)
表示している各行の値。インデックス(n)は0からの連番で最大値はListCount - 1
ListCount
表示している行数。

逆に、リストボックスの行を選択するときは、リストボックスのプロパティ「Selected(n)」を使います。Trueをセットすると選択、Falseをセットすると選択解除です。インデックス(n)に指定するのは行番号です。(例3)

プロパティ「Selected(n)」へ設定する内容と効果
True
インデックスで指定した行を選択します
False
インデックスで指定した行の選択を解除します

    '例1:リストボックスの値を参照する

    Dim varData     As Variant '取り出した値を一時的に保存する変数
    Dim strSelected As String  '取り出した値を保存する変数

    strSelected = vbNullString

    With lstPrefList

         For Each varData In .ItemsSelected

             strSelected = strSelected & .ItemData(varData - 1) & " "

         Next

    End With

    MsgBox strSelected & "を選択しました"

    '例2:リストボックスへ表示している行数を知る場合

    MsgBox Me.lstPrefList.ListCount

    '例3:リストボックスの行を選択する場合

    ':福島県(7)と東京都(13)を選択
    ':ただし、インデックスには「実際の表示位置-1」を指定する
    Me.lstPrefList.Selected(6) = True
    Me.lstPrefList.Selected(12) = True
Copyright(C) 1999-2006 結城圭介。 All rights reserved