【发布时间】:2020-02-24 10:19:49
【问题描述】:
我有以下If-声明:
If wb.Range("A1").Value = "n/a" Or wb.Range("A1").Value = "na" Then
wb.Range("A2").Value = "-"
Else
...
End
这工作正常,直到 A1 包含 #NV(错误,它不是字符串)并且代码给了我错误 13(类型不匹配)。我试图简单地这样做:
If IsError(wb.Range("A1").Value) = True Or wb.Range("A1").Value = "n/a" Or wb.Range("A1").Value = "na" Then
wb.Range("A2").Value = "-"
Else
...
End
但是,再次输入不匹配。
如果我像这样分开它,它会起作用:
If IsError(wb.Range("A1").Value) = True Then
wb.Range("A2").Value = "-"
ElseIf wb.Range("A1").Value = "n/a" Or wb.Range("A1").Value = "na" Then
wb.Range("A2").Value = "-"
Else
...
End
这给我带来了几个问题:
是否可以像我在第二个代码 sn-p 中尝试的那样处理错误,没有
elseif,只有一个If-语句?为什么
If IsError(wb.Range("A1").Value) = True Or wb.Range("A1").Value = "n/a"不起作用? VBA 是否同时查看所有Or条件并且其中一个返回错误,所以整个If语句是否相同?
【问题讨论】:
-
1.不,恐怕这是不可能的。
IsError(wb.Range("A1").Value) = True被接受,但同一行还包含编译器无法评估的 `wb.Range("A1").Value = "n/a"'... 2. 正是因为我试图上面解释... -
您可以改用范围的
Text属性,但速度较慢。
标签: excel vba error-handling