Quelle est la différence entre =Empty et IsEmpty() dans VBA (Excel)?

j'ai utilisé le code VBA suivant:

Do While .Cell(i,1) <> Empty
  ' doing things
  i = i+1
Loop

pour itérer par des colonnes (avec des valeurs doubles/entières) dans Excel. Puis j'ai trouvé un cas où le test évalue à False chaque fois que la valeur de la cellule est 0. Je n'ai aucune idée de la différence entre cette affaire et celles qui travaillent.

si je change le test en:

Do While Not IsEmpty(.Cell(i,1))
  ..
Loop

ça marche très bien. Alors ma question Est: Quelle est la différence entre Comment IsEmpty() et =Empty sont évalués? Dans ce cas =Vide évaluer à Vrai pour les cellules dont la valeur est 0?

25
demandé sur Community 2011-12-15 19:17:42

3 réponses

Empty renvoie à une variable étant à sa valeur par défaut. Donc, si vous vérifier si une cellule avec une valeur de 0 = Empty alors cela reviendrait vrai.

IsEmpty renvoie à aucune valeur initialisée.

En bref, si vous voulez voir si une cellule est vide (comme dans le rien n'existe dans sa valeur), puis utilisez IsEmpty. Si vous voulez voir si quelque chose est à sa valeur par défaut puis utilisez Empty.

28
répondu Justin Self 2011-12-16 15:26:11

De l'Aide:

IsEmpty renvoie True si la variable n'est pas initialisée, ou si elle est explicitement définie à Vide; sinon, il retourne False. Le faux est toujours retourné si l'expression contient plus d'une variable.

IsEmptyrenvoie uniquement des informations significatives pour les variantes.

À vérifier si une cellule est vide, vous pouvez utiliser cell(x,y) = "".

Vous pouvez gagner du temps en utilisant Range("X:Y").SpecialCells(xlCellTypeBlanks) ou xlCellTypeConstants ou xlCellTypeFormulas

4
répondu Patrick Honorez 2011-12-15 16:30:43

je crois Qu'IsEmpty est juste une méthode qui prend la valeur de retour de la cellule et vérifie si elle est vide ainsi: IsEmpty(.De la cellule(i,1)) ->

return .Cell(i,1) <> Empty
-4
répondu nikola-miljkovic 2011-12-15 15:19:49