VBA – Eine Sub oder Funktion beenden
In VBA können Sie eine Sub oder eine Funktion beenden, indem Sie die Befehle Exit Sub oder Exit Function verwenden.
Exit Sub
Exit Function
Wenn die Ausführung des Codes zu Exit Sub oder Exit Function kommt, wird eine Sub oder eine Funktion beendet und mit der Ausführung des weiteren Codes fortgefahren.
Wenn Sie lernen wollen, wie man eine Sub bei einem Fehler beendet, klicken Sie auf diesen Link: VBA On Error Exit Sub.
Wenn Sie lernen möchten, wie Sie eine ganze Codeausführung beenden können, klicken Sie auf diesen Link: VBA Ende.
Beenden einer Sub in VBA
In diesem Beispiel sehen Sie, was passiert, wenn wir den Befehl Exit Sub in einer Sub verwenden. Wir haben eine Sub namens Sub_Beenden erstellt, die den Befehl Exit Sub enthält. Die Sub Sub_Beenden_Aufrufen ruft diese Sub auf. Hier ist der Code:
Private Sub Sub_Beenden()
Dim i As Integer
For i = 1 To 10
If i = 5 Then
MsgBox "Der Wert von i lautet " & i
Exit Sub
End If
Next i
End Sub
Private Sub Sub_Beenden_Aufrufen()
Call Sub_Beenden
MsgBox "Sub beenden"
End Sub
In der Sub_Beenden treten wir zuerst in die For-Schleife ein, wenn der Wert von i kleiner als 10 ist:
For i = 1 To 10
Next i
Danach prüfen wir, ob der Wert von i gleich 5 ist, indem wir den If-Anweisung verwenden. Wenn der Wert gleich 5 ist, wollen wir die Sub verlassen und die Meldungsbox mit dem Wert von i anzeigen lassen:
If i = 5 Then
MsgBox "Der Wert von i lautet " & i
Exit Sub
End If
Wenn die Bedingung nicht erfüllt ist, erhöht die folgende Anweisung i um 1 und springt wieder in die For-Schleife ein:
Next i
Im Sub_Beenden_Aufrufen rufen wir zunächst die Sub Sub_Beenden auf:
Call Sub_Beenden
Danach geben wir die Meldungsbox zurück:
MsgBox "Sub beenden"
Wenn Sie die Sub_Beenden_Aufrufen ausführen, ruft sie zuerst die Sub_Beenden auf. Wenn Sie diesen Code im Debug-Modus ausführen, werden Sie sehen, dass er die Schleife 5 Mal durchläuft. Bei der 5. Iteration wird der Wert der Variablen i zu 5 und der Code tritt in den Rumpf der If-Anweisung ein. Jetzt wird die Sub Sub_Beenden verlassen und an den Sub_Beenden_Aufrufen zurückgegeben. Die nächste Zeile ist Meldungsbox „Sub beenden“:
Wie Sie sehen können, wird Sub_Beenden direkt nach dem Befehl Exit Sub beendet, so dass die Zeile der Meldungsbox „Der Wert von i lautet “ & i niemals ausgeführt wird.
Beenden einer Funktion in VBA
Das Beenden einer Funktion in VBA ist ähnlich wie das Beenden einer Sub, nur dass der Befehl Exit Function lautet. Im Beispiel haben wir die Funktion Funktion_Beenden erstellt, die eine ganze Zahl zurückgibt. Die Sub Funktion_Beenden_Aufrufen ruft diese Funktion auf. Hier ist der Code:
Private Function Funktion_Beenden() As Integer
Dim i As Integer
For i = 1 To 10
If i = 5 Then
Funktion_Beenden = i
Exit Function
End If
Next i
End Function
Private Sub Funktion_Beenden_Aufrufen()
Dim intFunc As Integer
intFunc = Funktion_Beenden()
MsgBox "Der Wert von intFunc lautet " & intFunc
End Sub
In der Funktion_Beenden treten wir zuerst in die For-Schleife ein, wenn der Wert von i kleiner als 10 ist:
For i = 1 To 10
Next i
Danach prüfen wir, ob der Wert von i gleich 5 ist, indem wir die If-Anweisung verwenden. Wenn der Wert gleich 5 ist, weisen wir den Wert von i dem Funktionsergebnis zu und beenden die Funktion:
If i = 5 Then
Funktion_Beenden = i
Exit Function
End If
Ist die Bedingung nicht erfüllt, wird mit der folgenden Anweisung i um 1 erhöht und in die For-Schleife erneut eingesprungen:
Next i
In der Funktion_Beenden_Aufrufen rufen wir zunächst die Funktion Funktion_Beenden auf. Dazu müssen wir die Variable intFunc vom Typ Integer deklarieren und ihr das Ergebnis der Funktion Funktion_Beenden zuweisen:
Dim intFunc As Integer
intFunc = Funktion_Beenden()
Danach geben wir die Meldungsbox mit dem Wert von intFunc zurück:
MsgBox "Der Wert von intFunc lautet " & intFunc
Wenn Sie die Funktion Funktion_Beenden_Aufrufen ausführen, wird zuerst die Funktion Funktion_Beenden aufgerufen. Wenn Sie diesen Code im Debug-Modus ausführen, werden Sie sehen, dass er die Schleife 5 Mal durchläuft. Bei der 5. Iteration wird der Wert der Variablen i zu 5 und der Code tritt in den Rumpf der If-Anweisung ein. Jetzt wird der Wert der Funktion_Beenden zu i und die Funktion wird beendet und an die Funktion_Beenden_Aufrufen zurückgegeben. Die nächste Zeile ist die Meldungsbox „Der Wert von intFunc lautet “ & intFunc:
VBA Coding Made Easy
Stop searching for VBA code online. Learn more about AutoMacro - A VBA Code Builder that allows beginners to code procedures from scratch with minimal coding knowledge and with many time-saving features for all users!Learn More!