【发布时间】:2014-11-04 01:00:04
【问题描述】:
我在下面的代码行中遇到类型不匹配错误。它在一个循环内,直到第一次迭代 .Cells(rowStart + i, ISO_revs_col).Value 是一个字符串时才会发生错误。这会导致错误是有道理的,但我希望.IfError 函数只返回“0”字符串。如果有人能告诉我为什么我收到错误而不是“0”,我将不胜感激。
Debug.Print Application.WorksheetFunction.IfError(CLng(.Cells(rowStart + i, _
ISO_revs_col).Value), "0")
提前致谢。
【问题讨论】:
-
我认为 VBA 中没有可用的工作表函数中的 IFERROR。不过不确定,没有办法检查atm。但是您可以改用 On Error Resume Next 和 On Error Goto 0。
-
如前所述,您不能以这种方式使用
IFERROR。过去,我一直使用Application.Sum(.Cells(rowStart + i, ISO_revs_col).Value))之类的东西,因为SUM工作表函数会将文本字符串总计为零。 -
有一个工作表函数(我在 Microsoft 的帮助下找到了它),但如下所述,我用错了。 @Jeeped 我想我会使用你的解决方案。谢谢!
-
@nateAtwork 是的,但不是在 VBA 中,正如我在评论中指出的那样。 Jeep 的解决方案很聪明,不使用
CLng。
标签: excel vba error-handling