In VBA können Sie ein Sub oder eine Funktion beenden, indem Sie die Abo beenden oder Exit-Funktion Befehle.
1 | Abo beenden |
1 | Exit-Funktion |
Wenn die Ausführung des Codes kommt Abo beenden oder Exit-Funktion, wird ein Sub oder eine Funktion beendet und mit jeder anderen Codeausführung fortgefahren.
Wenn Sie erfahren möchten, wie Sie ein Sub bei einem Fehler beenden, klicken Sie auf diesen Link: VBA On Error Exit Sub
Wenn Sie erfahren möchten, wie Sie die Ausführung eines ganzen Codes beenden, klicken Sie auf diesen Link: VBA End
Beende ein Sub in VBA
Sie werden am Beispiel sehen, was passiert, wenn wir die Abo beenden Befehl in einem Sub. Wir haben einen Sub erstellt ExitSub, die die Abo beenden Befehl hinein. Die subCallExitSub nennt diese Sub. Hier ist der Code:
123456789101112131415161718 | Privates Unter-ExitSub()Dim i As IntegerFür i = 1 bis 10Wenn i = 5 DannAbo beendenMsgBox "Der Wert von i ist" & iEnde WennAls nächstesEnd SubPrivater UnteraufrufExitSub()ExitSub aufrufenMsgBox "Sub beenden"End Sub |
In dem ExitSub, geben wir zuerst die For-Schleife ein, wenn der Wert von i kleiner als 10 ist:
123 | Für i = 1 bis 10Als nächstes |
Danach prüfen wir mit dem If-Befehl, ob der Wert von i gleich 5 ist. Wenn der Wert 5 ist, möchten wir das Sub verlassen und das Message-Feld mit dem Wert i zurückgeben:
1234 | Wenn i = 5 DannAbo beendenMsgBox "Der Wert von i ist" & iEnde Wenn |
Wenn die Bedingung nicht erfüllt ist, erhöht die folgende Anweisung i um 1 und tritt erneut in die For-Schleife ein:
1 | Als nächstes |
In dem CallExitSub, nennen wir zuerst die Sub ExitSub:
1 | ExitSub aufrufen |
Danach geben wir die Message-Box zurück:
1 | MsgBox "Sub beenden" |
Wenn du das läufst CallExitSub, es ruft zuerst die ExitSub. Wenn Sie diesen Code im Debug-Modus ausführen, werden Sie sehen, dass er die Schleife 5 Mal durchläuft. In der 5NS Iteration wird der Wert der Variablen i zu 5 und der Code wird in den If-Body eingegeben. Jetzt der Sub ExitSub wird verlassen und zum zurückgekehrt CallExitSub. Die nächste Zeile ist MsgBox „Sub verlassen“:
Wie Sie sehen können, ist die ExitSub wird gleich danach verlassen Abo beenden Befehl, also die MsgBox „Der Wert von i ist“ & i wird nie hingerichtet.
Beenden einer Funktion in VBA
Das Beenden einer Funktion in VBA ähnelt dem Beenden eines Sub, nur der Befehl lautet Exit-Funktion. Im Beispiel haben wir die ExitFunc was eine ganze Zahl zurückgibt. Die sub CallExitFunktion ruft diese Funktion auf. Hier ist der Code:
1234567891011121314151617181920 | Private Funktion ExitFunc() As IntegerDim i As IntegerFür i = 1 bis 10Wenn i = 5 DannExitFunc = iExit-FunktionEnde WennAls nächstesEndfunktionPrivate Sub CallExitFunction()Dim intFunc As IntegerintFunc = ExitFunction()MsgBox "Der Wert von intFunc ist " & intFuncEnd Sub |
In dem ExitFunc, geben wir zuerst die For-Schleife ein, wenn der Wert von i kleiner als 10 ist:
123 | Für i = 1 bis 10Als nächstes |
Danach prüfen wir mit dem If-Befehl, ob der Wert von i gleich 5 ist. Wenn der Wert 5 ist, weisen wir dem Funktionsergebnis den Wert von i zu und verlassen die Funktion:
1234 | Wenn i = 5 DannExitFunc = iExit-FunktionEnde Wenn |
Wenn die Bedingung nicht erfüllt ist, erhöht die folgende Anweisung i um 1 und tritt erneut in die For-Schleife ein:
1 | Als nächstes |
In dem CallExitFunktion, rufen wir zuerst die Funktion ExitFunc: Dazu müssen wir die Variable deklarieren intFunc Geben Sie Integer ein und weisen Sie das Ergebnis der ExitFunc Funktion dazu:
123 | Dim intFunc As IntegerintFunc = ExitFunction() |
Danach geben wir die Message-Box mit dem Wert von zurück intFunc:
1 | MsgBox "Der Wert von intFunc ist " & intFunc |
Wenn du das läufst CallExitFunktion, wird zuerst die Funktion aufgerufen ExitFunc. Wenn Sie diesen Code im Debug-Modus ausführen, werden Sie sehen, dass er die Schleife 5 Mal durchläuft. In der 5NS Iteration wird der Wert der Variablen i zu 5 und der Code wird in den If-Body eingegeben. Jetzt ist der Wert der ExitFunc wird i und die Funktion wird verlassen und zum CallExitFunktion. Die nächste Zeile ist MsgBox „Der Wert von intFunc ist“ & intFunc: