3 回答
TA贡献1801条经验 获得超16个赞
正如DOK提到的:不,VBA没有短路评估。
从技术上讲,使用2条If-then语句而不是使用AND运算符会更有效,但是除非您多次这样做,否则您不会注意到节省的地方,因此请选择可读性更高的内容。而且,如果您想真正掌握技术,VBA的处理多个If-then语句的速度也要比处理这些语句快Select Case。
VBA古怪:)
TA贡献1799条经验 获得超8个赞
答案是肯定的,VBA不会短路评估。
这不仅仅是风格问题;在这样的情况下会有很大的不同:
If i <= UBound(Arr, 1) And j <= UBound(Arr, 2) And Arr(i, 1) <= UBound(Arr2, 1) Then
Arr2(Arr(i, 1), j) = Arr(i, j)
End If
...这是不正确的。更合适的是:
If i <= UBound(Arr, 1) And j <= UBound(Arr, 2) Then
If Arr(i, 1) <= UBound(Arr2, 1) Then
Arr2(Arr(i, 1), j) = Arr(i, j)
End If
End If
或者,如果您不喜欢嵌套的ifs:
If i > UBound(Arr, 1) Or j > UBound(Arr, 2) Then
' Do Nothing
ElseIf Arr(i, 1) > UBound(Arr2, 1) Then
' Do Nothing
Else
Arr2(Arr(i, 1), j) = Arr(i, j)
End If
TA贡献1796条经验 获得超10个赞
您正在寻找的被称为“ 短路评估 ”。
VBA没有它。
您可以在此处看到可能适合您情况的方法。
这是选择参与有一个替代的方法Select Case为If。还有一个使用nested的示例Ifs。
- 3 回答
- 0 关注
- 565 浏览
相关问题推荐
添加回答
举报