選択された項目を取得する

広告

コンボボックスで選択された値、または入力された値を取得する方法を確認します。

まず選択された項目のインデックス番号を取得します。インデックス番号を取得するには「ListIndex」プロパティを使います。

現在選択されている項目を返します。値を設定することで選択する項目を
指定することも出来ます。

引数:
  object  設定するオブジェクトを指定します。
  Variant  コントロールで、現在選択されている項目を示します。

項目のインデックス番号は一番上の項目が「0」です。選択されていない場合には「-1」が返ります。

使い方はリストボックスの場合と基本的には同じなのですが、コンボボックスに登録されている項目を選択するのではなく新しい値を入力した場合は「ListIndex」プロパティの値は「-1」となります。何も選択していない場合と同じ「-1」となりますので注意して下さい。

次に指定したインデックス番号の項目を取得します。項目を取得するには「List」プロパティを使います。

指定した行と列のリストの項目を返します。

引数:
  object  設定するオブジェクトを指定します。
  row  0 以上で、リストの項目数から 1 を引いた数以下の整数値を指定し
    ます。
  column  0 以上で、列の数から 1 を引いた数以下の整数値を指定します。

行と列を指定して項目を取得します、列があるのはリストボックスでは複数列の表示も可能な為です。行及び列の値は先頭が「0」から開始されます。

またインデックスが「-1」の場合には何も選択されていないか、新しい値が入力されている場合です。コンボボックスのテキスト部分に入力された値を取得するには「Text」プロパティを使います。

テキスト部分の値の設定又は取得を行います。

引数:
  object  設定するオブジェクトを指定します。
  String  テキストを表す文字列式を指定します。既定値は、長さ 0 の文字
    列 ("") です。

実際の使い方としては次のようになります。

Private Sub getButton_Click()
    Dim index As Integer
    
    index = sampleForm.foodsCombo.ListIndex
    If index = -1 Then
        MsgBox sampleForm.foodsCombo.Text
    Else
        MsgBox sampleForm.foodsCombo.List(index)
    End If
End Sub

サンプルプログラム

では簡単なサンプルで試してみましょう。ボタン(オブジェクト名はgetButton)を1つ追加してClickイベント処理を記述します。

Private Sub getButton_Click()
    Dim index As Integer
    
    index = sampleForm.foodsCombo.ListIndex
    If index = -1 Then
        MsgBox sampleForm.foodsCombo.Text
    Else
        MsgBox sampleForm.foodsCombo.List(index)
    End If
End Sub

また呼びだすマクロは次の通りです。

testCombo2.bas

Sub テスト()
    Load sampleForm
    sampleForm.foodsCombo.AddItem "りんご"
    sampleForm.foodsCombo.AddItem "オレンジ"
    sampleForm.foodsCombo.AddItem "メロン"
    sampleForm.Show
End Sub

上記マクロを実行すると次のように表示されます。コンボボックスに登録されている項目を1つ選択して下さい。

選択された項目を取得する

選択された項目を取得する

項目を選択した状態で「値の取得」ボタンをクリックすると現在選択されている項目をダイアログで表示します。

選択された項目を取得する

次にコンボボックスに新しい値を入力してから「値の取得」ボタンをクリックすると次のように表示されます。

選択された項目を取得する

選択された項目を取得する

( Written by Tatsuo Ikura )