VBA – Eine Sub oder Funktion beenden

Written by

Mel Jenkins

Reviewed by

Steve Rynearson

Translated by

Zakarya El Oirzadi

Last updated on Januar 26, 2022

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“:

vba sub prozedur 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 function beenden

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! vba save as


Learn More!
vba-free-addin

Add-In für VBA-Code-Beispiele

Auf alle Code-Beispiele aus unserer Website einfach zugreifen.

Navigieren Sie einfach zum Menü, klicken Sie darauf und der Code wird direkt in Ihr Modul eingefügt. .xlam add-in.

(Keine Installation erforderlich!)

Kostenloser Download

Return to VBA Code Examples