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