使いやすいように設計された Microsoft リレーショナル データベース管理システムのファミリ。
こんばんは、ずっちです。
コンボボックスの列数が多いのであれば、
テキスト0.Value = コンボ0.Column(1)
って書き方もで取得する方法もありますよ。
添字はゼロスタートなので、今回の例では「1」を指定すると数字を取得できます。
このブラウザーはサポートされなくなりました。
Microsoft Edge にアップグレードすると、最新の機能、セキュリティ更新プログラム、およびテクニカル サポートを利用できます。
いつもお世話になっております。
コンボボックスの更新後イベントにおいて、ListIndexプロパティに設定される値が処理中に変更されてしまうケースがあるのですが、
該当事象に関するアナウンスやListIndexを用いずにその時点で参照されている選択項目を取得する方法はありませんでしょうか。
■発生事象
フォームのコンボボックスの更新後イベント中で、フォームのリフレッシュや他のコンボボックスの値集合ソースを変更するとListIndexの値が変化する。
■コンボ0設定内容
値集合ソース:「あ;1;い;2;い;3;う;4」
連結列:「2」
■コンボ0更新後イベント
Private Sub コンボ0_AfterUpdate()
[テキスト0].Value = [コンボ0].ListIndex
Me.Refresh
'[コンボ1].RowSource = "a;1"
'※他のコンボボックスのRowSorceを変更する場合も同様
[テキスト1].Value = [コンボ0].ListIndex
End Sub
■テキスト0,テキスト1,コンボ1設定
初期値で配置
■実行結果
画面上でコンボボックスより「い;3」を選択した場合テキストボックスに表示される値は下記の通り。
テキスト0:「2」
テキスト1:「1」 ←1列目に重複データが存在する場合、重複データの先頭値がListIndexとなってしまう。
なお上記事象はAccess2002では発生しておりませんでした。
使いやすいように設計された Microsoft リレーショナル データベース管理システムのファミリ。
ロックされた質問。 この質問は、Microsoft サポート コミュニティから移行されました。 役に立つかどうかに投票することはできますが、コメントの追加、質問への返信やフォローはできません。
質問作成者が受け入れた回答
こんばんは、ずっちです。
コンボボックスの列数が多いのであれば、
テキスト0.Value = コンボ0.Column(1)
って書き方もで取得する方法もありますよ。
添字はゼロスタートなので、今回の例では「1」を指定すると数字を取得できます。
質問作成者が受け入れた回答
こんにちは、ずっちです。
同様のものを作ってみると、たしかにおっしゃるようになりますね。
ところで、コンボボックスの連結列2の値を使うのでは問題があるんでしょうか。
テキスト0.Value = コンボ0.Value
Me.Refresh
テキスト1.Value = コンボ0.Value
こう書いてやると問題なく表示できました。
コンボの値を使うのがよくないのならば話は別ですけど、
直しも少ないですし、これで代用してみてはいかがでしょうか。
ずっちさん
コンボボックスの値の取得方法ありがとうございました。
対応方法検討させていただきます。
場合によっては値取得前にコンボ0.Value = コンボ0.Valueの様に
自分自身を一旦代入する方法もありかもしれないと思いました。
ご教示ありがとうございました。
ずっちさん
お世話になっております。
実際使用している部分では、コンボボックスの列がもう少し多く、非表示となっている列の値を取得する処理で問題がでていたのですが、ご指摘のValue値を用いて該当項目を特定することで対応できそうです。
確認中 ListIndexの動作につきまして別途疑問点が出たのですが、内容がことなりますので別途ご質問をあげさせていただきます。
ご回答ありがとうございました。