我有以下If
-Statement:
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
这给我带来了两个问题:
elseif
而只有一个If
-语句? If IsError(wb.Range("A1").Value) = True Or wb.Range("A1").Value = "n/a"
不起作用? VBA是否同时查看所有Or
条件,并且其中之一返回错误,所以整个If
语句是否相同? 最佳答案
VBA不支持
Short Circuiting
这就是
IsError(wb.Range("A1").Value) = True Or wb.Range("A1").Value = "n/a" Or wb.Range("A1").Value = "na"
不起作用的原因,因为它将检查所有条件。最好将
wb.Range("A1").Value = "n/a" Or wb.Range("A1").Value = "na"
放在elseif中。请参阅this。
关于excel - 在If语句中使用IsError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60373739/