コンボボックスで選択した行をテキストボックスに転記するVBAを作成しているのですが
コンボボックスの選択行を指定するには
Me.〇〇〇.ListIndex + 1を指定すると選択行の数字が出るはずなのですが、どこの行を選択してもすべて1になってしまいます。
ちなみにコンボボックスの見出しは表示されています。
どうすれば選択した行がきちんと表示されるのでしょうか?どこか設定がおかしいのでしょうか・・・。
コンボボックスで選択した行をテキストボックスに転記するVBAを作成しているのですが
コンボボックスの選択行を指定するには
Me.〇〇〇.ListIndex + 1を指定すると選択行の数字が出るはずなのですが、どこの行を選択してもすべて1になってしまいます。
ちなみにコンボボックスの見出しは表示されています。
どうすれば選択した行がきちんと表示されるのでしょうか?どこか設定がおかしいのでしょうか・・・。
取り敢えず、PrivateからEnd Subまでのコードを提示したほうが回答がつきやすいはずです。そして、次のようなサイトをググって、違いがないか見比べると自己解決できるかもしれません。■T'sWare フォーム&コントロール プロパティ活用辞典-094 ~ListIndex~
リンゴ様
情報が足りずにすみません。
下記の通りになりますが、Clickイベントだと正しく行番号が取得できますが、更新後処理イベントに入れると正しく表示されません。
関係があるのでしょうか?
Private Sub 部品番号_AfterUpdate()
If Me.部品番号.ListIndex <> -1 Then
Me.部品ID = Me.部品番号.Column(0,Me.部品番号.ListIndex)
Debug.Print Me.部品番号.ListIndex
End If
End Sub
大雑把にやってみた限りでは、特に問題なく転記出来ました。
Debug.printの結果も、すべて1が続く感じになるのかしら。
ちょっとよくわかりません。コード以外も想定通りかひと通りチェックするくらいでしょうか。例えば、VBAの画面で、ClickイベントとAfterUpdateイベントを試しているが、実は何かの弾みで、コンボボックスのプロパティの更新後処理イベントの[イベントプロシージャ]が外れてしまっていたり。
部品番号が同じで、顧客部品番号が違うもののリストがあるので、同じ部品番号の1番目を選択した時と2番目を選択した時を区別したいのです。(2列目は顧客部品番号があり、違う番号になっている)
仕方ないのでIDを取得し、ADOで抽出することにしました。
アドバイスありがとうございました。
部品番号コンボボックスの下記プロパティの設定はどうなってますか。
値集合ソース
値集合タイプ
連結列
列数
列幅
ちなみに、リストの選択した行の1列目の値を表示させたい場合は、
「連結列」を「1」と設定しておけば、下記でOKです。
あるいは、部品IDテキストボックスのコントロールソースを下記のように設定すればコード不要です。
プロパティもVBAで設定していますが、以前、直接コントロールソースに書き込んだら20列あるためなのか、フォームのデザインビューとフォームビューの切り替えがすごく遅くなってしまったのでVBAで対応することにしました。
仕方なくADOで対応することにしました。ありがとうございました。