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 關注
- 621 瀏覽
相關問題推薦
添加回答
舉報