VBA-Pause für Schleife

Excel VBA Break For Loop

In VBA wird Break For Loop auch als Exit for Loop bezeichnet. Jede Schleife in einer Prozedur hat eine Reihe von Anweisungen oder Kriterien erhalten, damit sie zeitlich unbegrenzt ausgeführt werden kann. Es ist jedoch sehr häufig, dass eine Schleife in eine Endlosschleife gerät und so die Schleife beschädigt Code in solchen Szenarien müssen wir die Schleife unterbrechen oder beenden, um aus bestimmten Situationen herauszukommen.

Angenommen, wir haben die Schleife angewiesen, zehnmal ausgeführt zu werden. Basierend auf der gegebenen Bedingung, wenn der Zellenwert oder ein anderes angegebenes Kriterium erfolgreich ist, muss sie die Excel-Schleife verlassen, bevor das vollständige Schleifenkontingent von 10 abgeschlossen ist. In diesem Artikel Wir zeigen Ihnen, wie Sie die Schleife anhand der angegebenen Kriterien verlassen können.

Wie kann ich Schleifen in VBA unterbrechen / beenden?

Sie können diese VBA Break For Loop Excel-Vorlage hier herunterladen - VBA Break For Loop Excel-Vorlage

# 1 - Pause für die nächste Schleife

VBA For Next Loop wird verwendet, um Zellen zu durchlaufen und bestimmte Aufgaben auszuführen. Ein Beispiel finden Sie im folgenden VBA-Code.

Code:

 Sub Exit_Loop () Dim K Solange für K = 1 bis 10 Zellen (K, 1) .Value = K Next K End Sub 

Dadurch werden Seriennummern von Zelle A1 bis A10 eingefügt.

Dies ist die offensichtliche Sache bei For Next Loop.

Jetzt möchte ich die Schleife durchbrechen, wenn ein Wert in den ersten 10 Zellen gefunden wurde. Dazu habe ich einen Textwert in die Zelle A8 eingegeben.

Jetzt möchte ich dies im Code anweisen, der besagt: "Wenn die Schleifenzelle einen bestimmten Wert hat, muss sie die Schleife vor dem festgelegten Grenzwert verlassen."

Code:

 Sub Exit_Loop () Dim K As Long For K = 1 bis 10 If Cells (K, 1) .Value = "" Then Cells (K, 1) .Value = K Sonst Exit For End If Next K End Sub 

Schauen Sie sich diese Codezeile an:

Wenn Zellen (K, 1) .Value = "" Dann

Zellen (K, 1) .Wert = K.

Sonst

  Beenden für

End If

Es heißt, wenn Zellen (K, 1) .Value = "" Schleifenzelle gleich nichts ist, setzen Sie die Schleife des Einfügens von Seriennummern von 1 bis 10 fort.

Der letzte Teil der Schleife sagt:

Sonst

  Beenden für

Wenn die obige Bedingung nicht TRUE ist, wird die Schleife "Exit For" ausgeführt.

Führen Sie nun den Code aus, der Seriennummern bis zur A7-Zelle einfügt.

Der obige Code hat die Schleife sofort verlassen, ohne etwas zu sagen. Woher wissen wir, dass er die Schleife verlassen hat?

Um diese Unklarheit zu beseitigen, müssen wir ein einfaches VBA-Meldungsfeld wie folgt einfügen.

Code:

 Sub Exit_Loop () Dim K As Long For K = 1 bis 10 If Cells (K, 1) .Value = "" Then Cells (K, 1) .Value = K Else MsgBox "Wir haben eine nicht leere Zelle in Zelle" & Zellen (K, 1) .Adresse & vbNewLine & "Wir verlassen die Schleife" Exit For End If Next K End Sub 

Wenn beim Durchlaufen der Zelle eine nicht leere Zelle gefunden wird, wird die Meldung „Wir haben eine nicht leere Zelle in Zelle A8“ angezeigt. Wir verlassen die Schleife “.

Dies informiert den Benutzer über den Ausgang der Schleife auch mit einer Zellenadresse. Wenn versehentlich ein Wert eingegeben wurde, können wir die im Meldungsfeld zurückgegebene Zellenadresse überprüfen.

# 2 - Pause bis Schleife

Ähnlich wie wir For Next Loop beendet haben, können wir auch die "Do Until" -Schleife verlassen. Schauen Sie sich zum Beispiel den folgenden Code an.

Code:

 Sub Exit_DoUntil_Loop () Dim K Solange K = 1 Do Bis K = 11 Zellen (K, 1) .Value = KK = K + 1 Loop End Sub 

Dieser Code übernimmt auch die Aufgabe, Seriennummern einzufügen. Wenn wir beispielsweise die Schleife verlassen möchten, wenn der Wert der Variablen "k" 6 wird, müssen wir die Kriterien als IF k = 6 eingeben und dann die Schleife verlassen.

Code:

 Sub Exit_DoUntil_Loop () Dim K Solange K = 1 Do Bis K = 11 Wenn K <6 Dann Zellen (K, 1) .Value = K Sonst Exit Do End Wenn K = K + 1 Loop End Sub 

Dadurch wird die Schleife ausgeführt, bis der Variablenwert 6 wird. Danach wird die Schleife verlassen. Wenn Sie dem Benutzer die Nachricht anzeigen möchten, können Sie auch das Nachrichtenfeld hinzufügen.

Code:

 Sub Exit_DoUntil_Loop () Dim K As Long K = 1 Do Bis K = 11 Wenn K 5 "Exit Do End Wenn K = K + 1 Loop End Sub 

Dies zeigt die folgende Meldung.

Auf diese Weise können wir basierend auf den angegebenen Kriterien die Schleife verlassen, wenn die Kriterien WAHR sind, oder wir können die Schleife fortsetzen.