選択された項目を取得する
コンボボックスで選択された値、または入力された値を取得する方法を確認します。
まず選択された項目のインデックス番号を取得します。インデックス番号を取得するには「ListIndex」プロパティを使います。
object.ListIndex = Variant
現在選択されている項目を返します。値を設定することで選択する項目を 指定することも出来ます。 引数: object 設定するオブジェクトを指定します。 Variant コントロールで、現在選択されている項目を示します。
項目のインデックス番号は一番上の項目が「0」です。選択されていない場合には「-1」が返ります。
使い方はリストボックスの場合と基本的には同じなのですが、コンボボックスに登録されている項目を選択するのではなく新しい値を入力した場合は「ListIndex」プロパティの値は「-1」となります。何も選択していない場合と同じ「-1」となりますので注意して下さい。
次に指定したインデックス番号の項目を取得します。項目を取得するには「List」プロパティを使います。
object.List( row, column )
指定した行と列のリストの項目を返します。 引数: object 設定するオブジェクトを指定します。 row 0 以上で、リストの項目数から 1 を引いた数以下の整数値を指定し ます。 column 0 以上で、列の数から 1 を引いた数以下の整数値を指定します。
行と列を指定して項目を取得します、列があるのはリストボックスでは複数列の表示も可能な為です。行及び列の値は先頭が「0」から開始されます。
またインデックスが「-1」の場合には何も選択されていないか、新しい値が入力されている場合です。コンボボックスのテキスト部分に入力された値を取得するには「Text」プロパティを使います。
object.Text [= String]
テキスト部分の値の設定又は取得を行います。 引数: 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
また呼びだすマクロは次の通りです。
Sub テスト() Load sampleForm sampleForm.foodsCombo.AddItem "りんご" sampleForm.foodsCombo.AddItem "オレンジ" sampleForm.foodsCombo.AddItem "メロン" sampleForm.Show End Sub
上記マクロを実行すると次のように表示されます。コンボボックスに登録されている項目を1つ選択して下さい。
項目を選択した状態で「値の取得」ボタンをクリックすると現在選択されている項目をダイアログで表示します。
次にコンボボックスに新しい値を入力してから「値の取得」ボタンをクリックすると次のように表示されます。
( Written by Tatsuo Ikura )