2010-07-25 7 views
35

J'ai un objet et dans ce que je check veux si certaines propriétés est définie sur false, comme:VBA Vérifiez si la variable est vide

If (not objresult.EOF) Then 
    'Some code 
End if 

Mais en quelque sorte, parfois objresult.EOF est Empty, et comment puis-je vérifier ?

  • fonction IsEmpty est pour les cellules Excel ne
  • objresult.EOF Is Nothing - retour Empty
  • objresult.EOF <> null - retour Empty aussi!
+4

S'il vous plaît fournir un code réel - nous montrent quel type d'objet est 'objresult'. Et 'IsEmpty' n'est pas spécifique pour les cellules Excel, c'est pour les variables' Variant'. –

Répondre

70

Comment test dépend du type de données de la propriété:

 
| Type         | Test       | Test2 
| Numeric (Long, Integer, Double etc.) | If obj.Property = 0 Then  | 
| Boolen (True/False)     | If Not obj.Property Then  | If obj.Property = False Then 
| Object        | If obj.Property Is Nothing Then | 
| String        | If obj.Property = "" Then  | If LenB(obj.Property) = 0 Then 
| Variant        | If obj.Property = Empty Then | 

Vous pouvez dire DataType en appuyant sur F2 pour lancer l'Explorateur d'objets et regardant l'objet. Une autre façon serait de simplement utiliser la fonction TypeName: MsgBox TypeName(obj.Property)

15

Pour vérifier si un Variant est nul, vous devez le faire comme:

Isnull(myvar) = True 

ou

Not Isnull(myvar) 
10

Pour un certain nombre, c'est difficile parce que si une cellule numérique est empty VBA lui assignera 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 une cellule numérique vide.

La vérification suivante a fonctionné pour moi pour voir s'il y avait une réelle 0 dans la cellule est entré:

If CStr(rng.value) = "0" then 
    'your code here' 
End If 
+0

Votre exemple de code est une bonne solution de contournement pour distinguer 0 et vide – Laurent

Questions connexes