VBA Exit Sub - Beenden Sie die VBA-Unterprozedur, wenn die Bedingungen nicht erfüllt sind

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

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.

Ich muss 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 bis 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 den Vorgang 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 ausgeführt.

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 die Marke als erwähnt

ErrorHandler: Sub beenden

Sobald der Code auf einen Fehler stößt, wird der Code gedrückt, um zum Etikett zu springen, und die Marke verfügt über die Anweisung "Exit Sub", sodass die Subprozedur beendet wird.

Jetzt werde ich den Code ausführen; Die Division wird berechnet, bis ein Fehler gefunden wird.

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.

Interessante Beiträge...