细胞似乎是空的,但不是

时间:2018-05-18 07:42:52

标签: excel vba excel-vba

我的工作表中有一些据说是空单元格,这些单元格给我带来了麻烦。

在运行任何代码之前,任何单元格的IsNullIsEmpty函数的输出都是False

但是,以下代码将令人惊讶地适用于任何单元格,即使它正在寻找空单元格:

If cell.value = "" Then cell.value = "Unassigned" 

更奇怪的是,如果我尝试撤消此代码:

If cell.value = "Unassigned" Then cell.value = ""

,单元格中IsNull的输出仍为False,但IsEmpty将变为True

这在大局中给我带来了很多麻烦,因为我使用数据透视表来总结数据,包括那些麻烦的单元格,在运行这两行代码之前,数据透视表不会为这些代码分配任何标签空白单元格,但在运行代码后,它将使用"(空白)"标签代替。我需要命名以保持一致。

1 个答案:

答案 0 :(得分:5)

考虑一下:

Debug.Print IsNull("X")
False
Debug.Print IsNull("")
False
Debug.Print IsNull(Empty)
False
Debug.Print IsNull(Null)
True

IsNull只会为Null返回true。它不适合细胞价值测试。