VBA(Excel)中= Empty和IsEmpty()之间有什么区别?

时间:2011-12-15 15:17:43

标签: excel-vba vba excel

我使用了以下VBA代码:

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

在Excel中迭代列(具有Double / Integer值)。然后我发现了一个案例,只要单元格的值为0,测试就会计算为False。我不知道这个案例和工作案例之间有什么区别。

如果我将测试更改为:

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

它工作正常。所以我的问题是:如何评估IsEmpty()和= Empty之间的区别?在什么情况下,对于值为0的单元格,将= Empty计算为True?

3 个答案:

答案 0 :(得分:29)

Empty表示变量处于默认值。因此,如果您检查值为0 = Empty的单元格是否会返回true。

IsEmpty表示没有初始化值。

简而言之,如果您想查看某个单元格是否为空(如其值中没有任何内容),请使用IsEmpty。如果您想查看某些内容当前是否为默认值,请使用Empty

答案 1 :(得分:4)

来自帮助:
IsEmpty 如果变量未初始化或显式设置为清空,则返回True;否则,返回False。如果表达式包含多个变量,则始终返回False IsEmpty 仅返回变体的有意义信息

要检查单元格是否为空,可以使用cell(x,y) = "" 您最终可以使用Range("X:Y").SpecialCells(xlCellTypeBlanks)xlCellTypeConstantsxlCellTypeFormulas

来节省时间

答案 2 :(得分:-4)

我相信IsEmpty只是获取Cell的返回值并检查其是否为空的方法: IsEmpty(.Cell(i,1))确实 - &gt;

return .Cell(i,1) <> Empty