J'ai un objet dans lequel je veux vérifier si certaines propriétés sont définies sur false, comme:
If (not objresult.EOF) Then
'Some code
End if
Mais quelque part, parfois objresult.EOF
est Empty
, et comment puis-je le vérifier?
IsEmpty
concerne uniquement les cellules Excelobjresult.EOF Is Nothing
_ retourne Empty
objresult.EOF <> null
_ retourne Empty
également!La façon dont vous testez dépend du DataType de la propriété:
| Type | Test | Test2 | Numeric (Long, Integer, Double etc.) | Si obj.Property = 0 alors | | Boolen (Vrai/Faux) | Si pas obj.Property Then | Si obj.Property = False Alors | Objet | Si l'obj. La propriété n'est rien alors | | String | If obj.Property = "" Alors | Si LenB (obj.Property) = 0 Alors | Variante | Si obj.Property = Vide, alors |
Vous pouvez indiquer le type de données en appuyant sur F2 pour lancer le navigateur d'objets et en recherchant l'objet. Une autre solution consisterait simplement à utiliser la fonction TypeName: MsgBox TypeName(obj.Property)
Pour vérifier si Variant
est Null, vous devez le faire comme suit:
Isnull(myvar) = True
ou
Not Isnull(myvar)
Pour un nombre, c'est délicat, car si une cellule numérique est empty
VBA lui attribue une valeur par défaut de 0, il est donc difficile pour votre code VBA de faire la différence entre un zéro entré et un blanc vide. cellule.
La vérification suivante a fonctionné pour moi pour voir si un 0 réel avait été entré dans la cellule:
If CStr(rng.value) = "0" then
'your code here'
End If
J'ai eu un problème similaire avec un entier qui pourrait légitimement être assigné 0 dans Access VBA. Aucune des solutions ci-dessus n'a fonctionné pour moi.
Au début, je viens d'utiliser une instruction booléenne var et IF:
Dim i as integer, bol as boolean
If bol = false then
i = ValueIWantToAssign
bol = True
End If
Dans mon cas, mon affectation de variable entière se trouvait dans une boucle for et dans une autre instruction IF. J'ai donc fini par utiliser "Exit For" à la place, car elle était plus concise.
comme si:
Dim i as integer
ForLoopStart
If ConditionIsMet Then
i = ValueIWantToAssign
Exit For
End If
ForLoopEnd