Microsoft Access 掲示板

コンボボックスの選択行が正しく表示されない

6 コメント
views
4 フォロー

コンボボックスで選択した行をテキストボックスに転記するVBAを作成しているのですが
コンボボックスの選択行を指定するには
Me.〇〇〇.ListIndex + 1を指定すると選択行の数字が出るはずなのですが、どこの行を選択してもすべて1になってしまいます。
ちなみにコンボボックスの見出しは表示されています。

どうすれば選択した行がきちんと表示されるのでしょうか?どこか設定がおかしいのでしょうか・・・。

チョコラブ
作成: 2022/12/03 (土) 20:07:28
通報 ...
1
りんご 2022/12/03 (土) 20:58:03 4d616@0e907

 取り敢えず、PrivateからEnd Subまでのコードを提示したほうが回答がつきやすいはずです。そして、次のようなサイトをググって、違いがないか見比べると自己解決できるかもしれません。■T'sWare フォーム&コントロール プロパティ活用辞典-094 ~ListIndex~

2
チョコラブ 2022/12/03 (土) 21:32:46 9af1b@d60f0

リンゴ様

情報が足りずにすみません。
下記の通りになりますが、Clickイベントだと正しく行番号が取得できますが、更新後処理イベントに入れると正しく表示されません。
関係があるのでしょうか?

Private Sub 部品番号_AfterUpdate()
    If Me.部品番号.ListIndex <> -1 Then
        Me.部品ID = Me.部品番号.Column(0,Me.部品番号.ListIndex)
        Debug.Print Me.部品番号.ListIndex
    End If
End Sub

3
りんご 2022/12/03 (土) 23:17:22 4d616@0e907 >> 2

大雑把にやってみた限りでは、特に問題なく転記出来ました。

下記の通りになりますが、Clickイベントだと正しく行番号が取得できますが、更新後処理イベントに入れると正しく表示されません。

Debug.printの結果も、すべて1が続く感じになるのかしら。

関係があるのでしょうか?

ちょっとよくわかりません。コード以外も想定通りかひと通りチェックするくらいでしょうか。例えば、VBAの画面で、ClickイベントとAfterUpdateイベントを試しているが、実は何かの弾みで、コンボボックスのプロパティの更新後処理イベントの[イベントプロシージャ]が外れてしまっていたり。

5
チョコラブ 2022/12/05 (月) 12:42:39 a1353@4d8ec >> 3

部品番号が同じで、顧客部品番号が違うもののリストがあるので、同じ部品番号の1番目を選択した時と2番目を選択した時を区別したいのです。(2列目は顧客部品番号があり、違う番号になっている)

仕方ないのでIDを取得し、ADOで抽出することにしました。

アドバイスありがとうございました。

4
hatena 2022/12/04 (日) 02:09:32 修正

部品番号コンボボックスの下記プロパティの設定はどうなってますか。

値集合ソース
値集合タイプ
連結列
列数
列幅

ちなみに、リストの選択した行の1列目の値を表示させたい場合は、
「連結列」を「1」と設定しておけば、下記でOKです。

Private Sub 部品番号_AfterUpdate()
    Me.部品ID = Me.部品番号.Value
End Sub

あるいは、部品IDテキストボックスのコントロールソースを下記のように設定すればコード不要です。

=[部品番号]
6
チョコラブ 2022/12/05 (月) 12:44:49 a1353@4d8ec >> 4

プロパティもVBAで設定していますが、以前、直接コントロールソースに書き込んだら20列あるためなのか、フォームのデザインビューとフォームビューの切り替えがすごく遅くなってしまったのでVBAで対応することにしました。

仕方なくADOで対応することにしました。ありがとうございました。