4

我试图跳过值为零或为空的记录。截至目前,我有以下代码明确检查两者,但我觉得第二次检查是多余的。但我想确认我是对的,以便我可以删除 IF 的第二部分

IF (CellInValue(RowInCrnt, ColInCrnt) = 0 Or CellInValue(RowInCrnt, ColInCrnt) = "") Then
4

2 回答 2

7

不,""不等于0并且会在强类型场景中产生类型不匹配,或者如果用作Variant.

当单元格为空时,它也与零不同,但它会输出相同,因为在 VB 中,由于后台发生隐式转换而Empty = 0给出。 同样的,也会出于同样的原因给予。True
Empty = ""True

所以你需要两个检查。

于 2012-11-01T08:47:19.807 回答
4

GSerg 是完全正确的。

如果您真的想避免进行 2 次不同的检查,您可以将 If 更改为以下内容:

If Clng(0 & CellInValue(RowInCrnt, ColInCrnt)) = 0 then

CellInValue(RowInCrnt, ColInCrnt)为 ""、Empty 或 0 时返回 true。

尽管如果您的函数可以返回字母而不是数字,则在这种情况下会出现类型不匹配错误。

于 2012-11-01T08:54:26.650 回答