引用:
フォームのデザインビューでそのリストボックスを選択し[コントロールの種類の変更]を利用
引用:
非連結コントロール
元のリストボックス(後述のコードにおける[リスト4])の
[複数選択]プロパティの設定値が「しない」だったと仮定して、
引用:
連結列 1
列数 4
列幅 0cm;0cm;0cm;3cm
そのコンボボックスの各プロパティが上記のように設定されている場合、
ドロップダウンリストからいずれかのリスト行が選択された時の値は
選択されたリスト行の連結列 = 1 列目と同じ値に変更されます。
また、ドロップダウンリストが畳まれている状態において
実際に表示されるテキストは「連結列の値がコンボボックスの現在の値と
同じである最初のリスト行」の最も左の可視列 = 4 列目の値です。
引用:
buf = Left(![コンボ0].Column(0), 6)
mySQL = "SELECT distinct '" & buf & "', 元帳.一般名, マスター.目的コード, 元帳.目的 " & _
"FROM 元帳 INNER JOIN マスター ON 元帳.目的 = マスター.目的 " & _
"WHERE (((元帳.商品名) like '*" & buf & "*'));"
With ![リスト4]
.RowSource = mySQL
.Requery
End With
上記のプロシージャにより、[リスト4]の値集合ソースの全ての行において
[リスト4]の 1 列目が同一の文字列([コンボ0]において選択されたリスト行の
1 列目の値から、7 文字目以降の全ての文字を切り捨てた結果)となるように
設定されています。
リストボックスであれば、複数のリスト行/複数の列を一覧形式で表示し、
また[複数選択]プロパティの設定に応じて複数のリスト行を範囲選択することも出来るという関係上、
連結列の値が同一であるリスト行が複数件存在しても、リスト行の選択状態は維持されます。
しかしコンボボックスの場合、そのドロップダウンリストから選択できるリスト行は
常に 1 つだけです。
もし値集合ソースに「選択されたリスト行の連結列( 1 列目)と同じ値を持つ行」が
2 件以上存在した場合、非ドロップダウン状態のコンボボックスにおいて適用されるのは
それらのリスト行の先頭の 1 件のみとなります。
したがって、連結列の値が全てのリスト行において同一であるならば、
常に値集合ソースの最初の行が適用されるという結果となるでしょう。
引用:
リストボックスで自由に選択できていました
選択できる/できない以前に、「どのリスト行を選択しても常に同じ値になる」という状態に
なるように値集合ソース(の 1 列目)を操作していることが誤りであるように思います。
少なくともコンボボックスというコントロールの性質や用途には適していません。
そもそも[リスト4]が何のために設けられたコントロールなのか、
ドロップダウンリストにどのようなレイアウトのデータを表示したいのか、
ドロップダウンリストから任意のリスト行が選択された時に
コンボボックス自体の値がどのように変更されることが望ましいのか、
といったことについて再度振り返ってみることをお奨めします。