2010-10-01 16 views
1

J'ai un formulaire dans Microsoft Access 2007 appelé Système et une zone de liste déroulante appelée Utilitaire dans ce formulaire. Au-dessous de ceci est encore une autre zone de liste déroulante appelée Utility_FOO, et j'ai désactivé sa visibilité par défaut. L'une des options dans Utilities est une case à cocher intitulée «FOO». Je veux que Utility_FOO devienne visible chaque fois que FOO est sélectionné.Activation de la visibilité du champ à partir de la sélection de zone de liste déroulante dans Access 2007

J'ai essayé de créer un sous-programme dans Visual Basic qui vérifie si FOO est sélectionné chaque fois que je sélectionne un élément de la liste (en utilisant onUpdate), mais je n'arrive pas à vérifier cette entrée spécifique. Y a-t-il un moyen simple de le faire?

Merci!

+0

Est-ce une zone de liste déroulante à sélection multiple? – JeffO

+0

Je ne suis pas tout à fait sûr; Je suis relativement nouveau à Access. Lorsque j'appuie sur la flèche pour voir les choix disponibles, il y a une case à cocher à côté de chacun d'eux, et je peux vérifier le nombre d'entre eux que j'aime. – Bucket

+0

Il me semble que vous voulez que cela se produise dans l'AfterUpdate de votre contrôle. En outre, s'il y a des cases à cocher, cela semble être un champ à valeurs multiples, pas une liste déroulante ou une liste déroulante standard. Découvrir les valeurs dans ceux programmatiques est une marmite différente de poissons. Une capture d'écran de votre formulaire en mode Création peut être utile. –

Répondre

1

Si votre zone de liste modifiable est liée à un champ à plusieurs valeurs, examinez sa propriété .Value pour déterminer si FOO figure parmi les éléments sélectionnés (sélectionnés).

Private Sub Utility_AfterUpdate() 
    Call SetVisible 
End Sub 

Private Sub SetVisible() 
    Dim varItm As Variant 
    Dim blnVisible as Boolean 

    blnVisible = False 
    If Not IsNull(Me.Utility.Value) Then 
     For Each varItm In Me.Utility.Value 
      If varItm = "FOO" Then 
       blnVisible = True 
       Exit For 
      End If 
     Next varItm 
    End If 
    Me.Utility_FOO.Visible = blnVisible 
End Sub 

Vous pouvez également faire la même chose pour l'événement On Current du formulaire. Si oui, ajoutez ceci:

Private Sub Form_Current() 
    Call SetVisible 
End Sub