2015-08-20 8 views
7

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?

+0

werden beide unabhängig bewertet werden. In VBA glaube ich, dass es der einzige Weg ist, sie in getrennte verschachtelte if-Anweisungen aufzuteilen. –

+0

https://msdn.microsoft.com/EN-US/library/office/gg264205.aspx – findwindow

+0

Bisher: http://stackoverflow.com/questions/24641923/vba-short-circuit-and-alternatives, http://stackoverflow.com/questions/3242560/andalso-orelse-in-vba/3245183#3245183 –

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.