2017-08-04 3 views
1

J'ai un module VBA qui examine les contrôles d'accès et sélectionne uniquement les contrôles acTextBox ou acCheckBox. Cependant, je rencontre un problème de logique dans mon instruction If qui ne devrait permettre que les contrôles acTextBox = 109 et acCheckBox = 106, mais il laisse passer une étiquette avec une valeur de contrôle de 100 comme vous le voyez dans la fenêtre immédiate. Qu'est-ce qui se passe? Je suis perplexe .. Cela fonctionne si je supprime le "ou acCheckBox", mais permet aux étiquettes à travers quand je l'inclue, même si une étiquette n'est pas une case à cocher.Logique de contrôle VBA cassée

Ceci est un problème car il me donne une erreur plus tard.

Vive

Code

For Each ctl In frm.Controls Debug.Print ctl.Name 
    With ctl 
    Debug.Print ctl.ControlType 
    'Avoid labels and other controls with Value property. 
    If .ControlType = acTextBox Or acCheckBox Then 
     If .Value <> .OldValue Then 
+0

'acTextBox Ou acCheckBox' équivaut à' 109 Ou 106' qui est e équivalent à '111'. Si vous incluez votre code dans la question, nous pourrions vous montrer comment y remédier en copiant/collant votre code, et en le modifiant, mais je ne vais certainement pas taper votre code à partir de zéro. – YowE3K

Répondre

4

Remplacez votre ligne

If .ControlType = acTextBox OR acCheckBox Then 

avec ce

If (.ControlType = acTextBox) OR (.ControlType = acCheckBox) Then 
+2

Vous êtes gentil - Quand ils donnent juste des images de code dans la question, j'insiste habituellement pour qu'ils le remplacent avec le code réel avant de leur donner le code de travail. : D (Les images sont difficiles à indexer pour les moteurs de recherche, ce qui en fait une très mauvaise question.) – YowE3K

+0

Vérifié. En outre, le code téléchargé à des fins d'indexation. Aimez cette communauté. @ YowE3K –

+0

Je n'avais pas vu les conséquences de l'utilisation d'images. Merci pour l'explication. –