2013-11-20 18 views
5

2つの列(SubTopicIDSubTopic)を列挙するコンボボックスcmbSubTopicを持つAccess 2010フォームがあります。コンボボックスは、SubTopicIDを含むフィールドにバインドされています。コンボボックス内のSubTopicID列は非表示になり、SubTopicのみが表示されます。ユーザがドロップダウンからSubTopicを選択すると、対応するSubTopicIDがテーブルに格納されます。私はテーブルのSubTopicIDを検索するフォームのon loadイベントのためのいくつかのVBAコードを書いており、対応するSubTopicがComboBoxで選択されています。VBA:コンボボックスからアイテムを選択する方法

あなたが入力したテキストがリストに

項目ではありません私もこれを使用してみました:これはというエラーを与える

Set rsST = dbs.OpenRecordset(strSqlst) 
For i = 0 To Me.cmbSubTopic.ListCount - 1 
    If Me.cmbSubTopic.Column(0, i) = rsST.Fields("SubTopicID").Value Then 
     Me.cmbSubTopic.SetFocus 
     Me.cmbSubTopic.Selected(i) = True 
     Exit For 
    End If 
Next i 

:私の現在のコードは次のようなものです:

Me.cmbSubTopic = Me.cmbSubTopic.Selected(i) 

これは、コンボボックス内の項目を選択しますが、私が欲しくないテーブルのID欄に私の中で。

+0

通常、コンボボックスにはcontrolフィールドを持つものはありません。値はunderlyngテーブルフィールドの値です。 – jacouh

+0

フォームのOnLoadイベントでデータをテーブルに挿入し、コンボボックスのAfterUpdateイベントに挿入できるようにする方法がありますか? – ksagar

答えて

8

コンボの最初の列であるSubTopicIDがコンボの「バインド列」プロパティであると仮定すると、その列の.Valueプロパティとして使用されます。つまり、一致するコンボ行を選択するには、値を.Valueに割り当てる必要があります。

Me.cmbSubTopic.Value = rsST.Fields("SubTopicID").Value 

このアプローチは簡単ですが、それがあなたの状況に適した解決策かどうかは不明です。私たちはあなたのrsSTレコードセットについて何も知らない---レコードセットの現在の行のSubTopicIDフィールドは、コンボで選択したい値であると推測しました。私がその点を誤解した場合は、何か異なるものを見つけ出す必要があります。

コンボがフォームのレコードソースのフィールドにバインドされている場合、この提案によっても格納された値が変更されます。あなたがそれを望まないなら、コンボを "アンバインド"します。つまり、そのコントロールソースプロパティを空白にします。

関連する問題