ListIndexプロパティにより、コンボボックス(及びリストボックス)の何行目が選択されたのかを知ることができます。
例として「駅コードcmb」という名前のコンボボックスとともにテキストボックスを置き、そのコントロールソースを以下のようにします。
=[駅コードcmb].[ListIndex]
フォームビューです。コンボボックスで何も選択されていない状態での値は-1となります。
コンボボックスで8行目を選択してみると…
値は7となります。
このように、ListIndexの値は実際に選択された行の順番から1を引いた値となります(行番号が0から始まるといった方がわかりやすいかもしれません)。
ちょっとした応用です。
コンボボックスで選択された行の2列目の値を表示するテキストボックス(コントロースソースは「=[駅コードcmb].[Column](1)」です。列番号も0から始まりますので、2列目を指定する場合は列の番号を「1」とします)とともに、次のようなコントロールソースを持つテキストボックスを設けます。
=IIf([駅コードcmb].[ListIndex]=-1,"",[駅コードcmb].[Column](([駅コードcmb].[ListIndex])+1,1))
このテキストボックスは、コンボボックスで選択された行の「次の行」の2列目の値を表示します。
ちょっと複雑ですがIIf関数はコンボボックスが空白のときに備えたものであり、重要なのはこのうちColumnプロパティを用いた以下の部分です。
[駅コードcmb].[Column](([駅コードcmb].[ListIndex])+1,1)
これによりコンボボックスにより選択された行の次の行の2列目の値を取得できます。
Column(m,n)はコンボボックスのm行n列目の値を表し(くどいですが番号はいずれも0からはじまります)、行を指定する部分にListIndexプロパティを用いています。
また、内側のカッコが余計に見えますが省略するとうまくいきません。
改めてコンボボックスの10行目を選択してみます。
上のテキストボックスでは10行目の2列目の値が、そして下の方のコンボボックスでは11行目の2列目の値が表示されているのがわかります。