我试图跳过值为零或为空的记录。截至目前,我有以下代码明确检查两者,但我觉得第二次检查是多余的。但我想确认我是对的,以便我可以删除 IF 的第二部分
IF (CellInValue(RowInCrnt, ColInCrnt) = 0 Or CellInValue(RowInCrnt, ColInCrnt) = "") Then
不,""
不等于0
并且会在强类型场景中产生类型不匹配,或者如果用作Variant
.
当单元格为空时,它也与零不同,但它会输出相同,因为在 VB 中,由于后台发生隐式转换而Empty = 0
给出。
同样的,也会出于同样的原因给予。True
Empty = ""
True
所以你需要两个检查。
GSerg 是完全正确的。
如果您真的想避免进行 2 次不同的检查,您可以将 If 更改为以下内容:
If Clng(0 & CellInValue(RowInCrnt, ColInCrnt)) = 0 then
当CellInValue(RowInCrnt, ColInCrnt)
为 ""、Empty 或 0 时返回 true。
尽管如果您的函数可以返回字母而不是数字,则在这种情况下会出现类型不匹配错误。