Ich frage mich nur, wie funktioniert eine Or
bedingte Anweisung Arbeit in VBA/VB6. Wenn wir If A Or B Then
haben, in welcher Reihenfolge werden die Booleschen Ausdrücke ausgewertet? Wenn A wahr ist, wird B auch ausgewertet?Wie wird eine Oder-Anweisung in VBA ausgewertet?
7
A
Antwort
5
Hier sind einige Testergebnisse für Sie:
Public Sub DoTesting()
' Displays "Test1" followed by "Test2", so they're evaluated in order.
' Also, both expressions are evaluated even though Test1() is False.
If Test1() And Test2() Then
End If
' Displays "Test2" followed by "Test1", so they're evaluated in order.
' Also, both expressions are evaluated even though Test2() is True.
If Test2() Or Test1() Then
End If
' Displays "Test1" only. Test2() is not evaluated.
If Test1() Then If Test2() Then Debug.Print ""
End Sub
Public Function Test1() As Boolean
MsgBox "Test1"
Test1 = False
End Function
Public Function Test2() As Boolean
MsgBox "Test2"
Test2 = True
End Function
Also, beide Ausdrücke in einem Or
oder ein And
werden immer ausgewertet, um unabhängig vom Ergebnis. Sie können If ... Then If ... Then
verwenden, um einen einfachen Inline-Kurzschluss zu erreichen.
werden beide unabhängig bewertet werden. In VBA glaube ich, dass es der einzige Weg ist, sie in getrennte verschachtelte if-Anweisungen aufzuteilen. –
https://msdn.microsoft.com/EN-US/library/office/gg264205.aspx – findwindow
Bisher: http://stackoverflow.com/questions/24641923/vba-short-circuit-and-alternatives, http://stackoverflow.com/questions/3242560/andalso-orelse-in-vba/3245183#3245183 –