VBA: Comment sélectionner un élément à partir d'une zone de liste déroulante

J'ai Accès à 2010, qui est une zone de liste déroulante cmbSubTopic qui répertorie deux colonnes (SubTopicID et SubTopic). La zone de liste modifiable est lié à un champ contenant SubTopicID. Le SubTopicID colonne dans la zone de liste modifiable est caché, il ne montre que la SubTopic. Lorsque l'utilisateur sélectionne un SubTopic à partir de la liste déroulante correspondante SubTopicID est stocké dans la table. J'ai écrit du code VBA pour l'événement load du formulaire pour trouver le SubTopicID dans le tableau et le correspondant SubTopic est sélectionné dans la liste déroulante. Mon code actuel est quelque chose comme ceci:

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

Cela donne l'erreur disant:

Le texte que vous avez entré n'est pas un élément dans la liste

J'ai aussi essayé en utilisant ceci:

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

Cette sélectionne l'élément dans la zone de liste déroulante, mais il a également écrit la valeur de I dans la ID champ de la table que je ne veux pas.

En général, vous n'avez rien à faire pour la zone de liste déroulante d'avoir une source de contrôle, car sa valeur est celle de la underlyng des champs de la table.
Est il possible que je peux bloquer l'insertion de données dans la table dans l'événement OnLoad de la forme et de permettre ensuite de l'insérer sur l'événement AfterUpdate de la zone de liste déroulante.

OriginalL'auteur ksagar | 2013-11-20