VBA Exit Sub

Unterprozedur zum Beenden von Excel VBA

Exit Sub- Anweisung beendet die Unterprozedur früher als die definierten Zeilen von VBA-Codes. Um die Unterprozedur zu beenden, müssen wir jedoch eine Art logischen Test anwenden.

Lassen Sie uns dies in einfachen Worten konstruieren.

 Sub MacroName () '...' Code hier '... Sub beenden' Sub beenden, ohne weitere Codezeilen unten auszuführen '...' Dieser Code wird ignoriert '... Sub beenden 

Beispiele

Sie können diese VBA Exit Sub Excel-Vorlage hier herunterladen - VBA Exit Sub Excel-Vorlage

Beispiel 1

Ein besseres Beispiel finden Sie im folgenden Code.

Code:

 Sub Exit_Example1 () Dim k As Long For k = 1 bis 10 Zellen (k, 1) .Value = k Next k End Sub 

Mit dem obigen Code werden Seriennummern von 1 bis 10 in die Zellen A1 bis A10 eingefügt.

Jetzt möchte ich nur 5 Seriennummern einfügen und sobald der Wert der Variablen "k" 6 wird, möchte ich das Sub verlassen.

Dazu muss ich den logischen Test in Excel als IF k = 6 hinzufügen und dann Sub beenden .

Code:

 Sub Exit_Example1 () Dim k As Long For k = 1 To 10 Wenn k = 6, dann Exit Sub 'Sobald k Wert 6 wird, werden alle Codes ignoriert und Cells (k, 1) beendet .Value = k Next k End Sub 

Führen Sie nun den Code zeilenweise aus. Drücken Sie die Taste F8, um das Verfahren zu starten.

Ab sofort ist der k-Wert Null.

Um den k-Wert auf 1 zu ändern, drücken Sie noch einmal die Taste F8.

Der k-Wert ist also 1. Unser Code läuft weiter und fügt 1 in die Zelle A1 ein. Führen Sie die Schleife so lange aus, bis der Wert von k 6 wird.

Jetzt ist der Wert von k 6 und die Codezeile ist dabei, unseren logischen Test auszuführen, um die Unterprozedur zu verlassen. Wenn ich die Taste F8 noch einmal drücke, wird nur die gesamte Unterprozedur direkt beendet.

Wie wir sehen können, hat es das Wort "Exit Sub" hervorgehoben . Durch Drücken der Taste F8 wird die Unterprozedur verlassen, ohne zum Wort "Sub" zu wechseln .

Beispiel 2 - Bei Fehler Beenden Sie die Unterprozedur

Wir können die Unterprozedur auch verlassen, wenn wir die Fehlerwerte erhalten. Betrachten Sie beispielsweise die folgenden Daten zum Teilen der Zahl 1 von der Zahl 2.

Unten ist der Code, um die Division von zwei Zahlen zu erhalten.

Code:

 Sub Exit_Example2 () Dim k As Long For k = 2 bis 9 Zellen (k, 3) .Value = Cells (k, 1) .Value / Cells (k, 2) .Value Next k End Sub 

Wie wir wissen, können wir keine Zahl durch Null teilen. Wenn wir dies versuchen, erhalten wir den Fehler als Laufzeitfehler '11': Division By Zero.

Um dies zu vermeiden, sobald ein Fehler auftritt, werde ich mein Makro erwähnen, um die Unterprozedur mit sofortiger Wirkung zu beenden. Der folgende Code ist ein solcher Fall.

Code:

 Sub Exit_Example2 () Dim k As Long For k = 2 bis 9 On Error GoTo ErrorHandler-Zellen (k, 3) .Value = Cells (k, 1) .Value / Cells (k, 2) .Value Next k ErrorHandler: Exit Sub End Sub 

Im obigen Beispiel habe ich die Anweisung "On Error Goto ErrorHandler" erwähnt. Hier ist das Wort ErrorHandler die Bezeichnung, die ich zugewiesen habe. Wenn Sie am Ende des Codes sehen können, habe ich das Etikett als erwähnt

ErrorHandler: Sub beenden 

Sobald der Code auf einen Fehler stößt, wird der Code gedrückt, um zum Label zu springen, und das Label hat die Anweisung "Exit Sub", wodurch die Subprozedur beendet wird.

Jetzt werde ich den Code ausführen, er wird die Division berechnen, bis er einen Fehler findet.

Wie Sie in der Zelle C7 sehen können, ist ein Fehler als "Division durch Null" aufgetreten, sodass die Unterprozedur beendet wurde. Ohne den Benutzer zu informieren, ist das Verlassen des Unterverfahrens immer eine gefährliche Sache. Um den Benutzer über den Fehler zu informieren, können wir ein kleines Meldungsfeld einfügen.

Code:

 Sub Exit_Example2 () Dim k As Long For k = 2 bis 9 On Error GoTo ErrorHandler-Zellen (k, 3) .Value = Cells (k, 1) .Value / Cells (k, 2) .Value Next k ErrorHandler: MsgBox " Es ist ein Fehler aufgetreten und der Fehler lautet: "& vbNewLine & Err.Description Exit Sub End Sub 

Der obige Code zeigt die Fehlermeldung an und beendet dann die Unterprozedur. Wenn beim Ausführen von Code ein Fehler auftritt, wird das folgende Meldungsfeld in VBA angezeigt.

Dies ist eher eine zuverlässige Methode zum Beenden der Unterprozedur.