#703 | コンボボックスで何番目の項目が選択されたかを取得するには? | フォーム、VBA | |
フォームに配置されたコンボボックスコントロールにおいて、ある項目が選択されたとき、その内容が何かは「Value」プロパティ(実際には省略可)を調べることで取得することができます。 次のプログラム例では、商品コードと商品名をドロップダウンリストに表示する、「cbo商品選択」という名前のコンボボックスで項目が選択されたとき(=更新後処理イベント発生時)、その選択値を「txt選択結果」というテキストボックスに代入しています。 Private Sub cbo商品選択_AfterUpdate() '商品選択コンボボックスの更新後処理 Me!txt選択結果 = Me!cbo商品選択 End Sub
一方、選択された項目のデータそのものではなく、”ドロップダウンリストの何番目の項目が選択されたか”を取得したい場合には、「ListIndex」プロパティの値を調べます。 このプロパティの値は、先頭項目を「0」として数えます。もし1番目の項目が選択されれば「0」、5番目の項目が選択されれば「4」の値が返されます。 次のプログラム例では、「cbo商品選択」で項目が選択されたとき、その「ListIndex」プロパティ値(=選択項目の番号 - 1)を「txt選択リスト番号」というテキストボックスに代入しています。 Private Sub cbo商品選択_AfterUpdate() '商品選択コンボボックスの更新後処理 Me!txt選択結果 = Me!cbo商品選択 Me!txt選択リスト番号 = Me!cbo商品選択.ListIndex End Sub
なお、「ListIndex」プロパティ値が「0」であれば「先頭の項目が選択された」とすぐに判別できますが、もし『最後の項目が選択されたかどうか』を調べたいときには、「ListIndex」プロパティと「ListCount」プロパティを併用します。 「ListCount」プロパティにはドロップダウンリストの”全項目数”(70項目あれば”70”)が格納されていますので、もし「ListIndexの値 = ListCountの値 - 1」であれば最後の項目が選択されたと判断できます。 Private Sub cbo商品選択_AfterUpdate() '商品選択コンボボックスの更新後処理 With Me!cbo商品選択 Me!txt選択結果 = .Value Me!txt選択リスト番号 = .ListIndex If .ListIndex = .ListCount - 1 Then MsgBox "最後の項目が選択されました!" End If End With End Sub 実行例: 【ヒント】
上記で説明したすべてのプロパティやプログラムは、「リストボックス」コントロールでもそのまま使うことができます。 |
|||
|
Copyright © T'sWare All rights reserved |