当我使用以下代码时,它可以正常工作:
If xMin <> 0 Then
If xMax <> 0 Then
If xMax / xMin > 2 Then
'some code
End If
End If
End If
但是我想只使用一个if语句来避免除法错误,但是它给了我一个Run-time error '11': Division by zero
:
If xMin <> 0 Or xMax <> 0 Then
If xMax / xMin > 2 Then
'some code
End If
End If
(如果我能设法让上面的代码工作),我打算这样做:
If (xMin <> 0 Or xMax <> 0) And (xMax / xMin > 2) Then
'some code
End If
这背后的原因是什么?如何在一个if语句中使其工作?
答案 0 :(得分:4)
你运气不好。
与C,C ++,Java和c不同,VBA没有实现短路 And
。它会评估表达式中的每个术语,即使结果已知。在您的情况下,这意味着即使xMax / xMin
为0,也会评估xMin
。
所以你需要把它写成
If xMin <> 0 And xMax <> 0 Then
If xMax / xMin > 2 Then
'some code
End If
End If
请注意,我已修复条件中的拼写错误:您需要And
代替Or
。