Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: schleife unter- und abbrechen

schleife unter- und abbrechen
joel
hallo
ich suche eine funktion, um schleifen (for..next, while...wend, do...loop, ...) frühzeitig zu verlassen, resp. frühzeitig am beginn der schleife fortsetzen.
ein beispiel:
For i = 1 To 100
If i = 10 Then continue 'schleife wird mit i=10 nicht durchlaufen
'diverse anweisungen
If i = j Then break 'schleife wird verlassen
'weitere anweisungen
Next i 'ja gut, ein wenig fantasievolles beispiel
ich kenne die funktionen in php: es sind "continue" und "break". da gibt es doch sicher ähnliches in VB, oder?
danke für eure hilfe
gruss joel
Anzeige

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: schleife unter- und abbrechen
Hans
Hallo joel,
wenn ich die Sache richtig verstanden habe, wie folgt:

For i = 1 To 100
If i <> 10 Then
'Tue dies und das
End If
If i = j Then Exit For
Next i

gruss hans
AW: schleife unter- und abbrechen
29.04.2004 09:26:24
joel
hallo hans
habe leider nur "exit while" probiert... künstlerpech! "exit for" und "exit do", das ist genau das was ich gesucht habe.
"continue" kann ich natürlich mit einer if-anweisung realisieren, wäre trotzdem schöner, etwas ähnliches wie "continue" einzusetzen. aber kein weltuntergang, wenns das nicht gibt!
danke vielmals
joel
Anzeige
AW: schleife unter- und abbrechen
Matthias
Hallo Joel,

Sub test()
For i = 1 To 10
If i = 5 Then GoTo nxt
Debug.Print i
If i = 8 Then Exit For
nxt:
Next i
End Sub

der Goto-Befehl ist ja eigentlich nicht schön, du kannst es auch so lösen:

Sub test2()
For i = 1 To 10
If i <> 5 Then
Debug.Print i
If i = 8 Then Exit For
End If
Next i
End Sub

Analog gibt es Exit Do.
Siehe VBA-Hilfe unter "Exit".
Gruß Matthias
Anzeige
AW: schleife unter- und abbrechen
29.04.2004 09:29:20
joel
hallo matthias
jou genau, bin nicht so fan von "goto". bleibt also (nur) die if-anweisung.
exit for und exit do ist aber genau das, was ich suche..
danke für deine hilfe
gruss joel
AW: schleife unter- und abbrechen
Alexandra
Hi Joel,
ich verstehe nicht, wonach Du suchst. Schleifen sind Entscheidungsstrukturen...und führen je nach Wert eines Abfragekriteriums eben in eine bestimmte Richtung. Innerhalb for...next kannst Du
Exit For vorzeitig verlassen - normalerweise eher in Ausnahmesituationen (z.B. bei Fehler).
LG
Alexandra
Anzeige
AW: schleife unter- und abbrechen
29.04.2004 09:39:24
joel
hallo alexandra
es gibt durchaus situationen, in denen schlaufen frühzeitig verlassen werden sollen.. hier hilft exit for und exit do
um unnötige if-verschachtelungen zu vermeiden, kann es auch von vorteil sein, die schleife frühzeitig wieder vorne zu beginnen (also im prinzip bei next i)
danke auch für deine hilfe
gruss joel
Anzeige
;
Anzeige
Anzeige

Infobox / Tutorial

Schleifen in VBA: Wie Du sie abbrechen und fortsetzen kannst


Schritt-für-Schritt-Anleitung

  1. Verwenden von Exit For und Exit Do: Um eine For- oder Do-Schleife vorzeitig zu verlassen, kannst Du die Befehle Exit For oder Exit Do verwenden. Diese Befehle sind ideal, wenn Du bestimmte Bedingungen hast, unter denen die Schleife sofort abgebrochen werden soll.

    For i = 1 To 100
       If i = 10 Then Exit For ' Schleife wird bei i=10 verlassen
    Next i
  2. Verwendung von Continue: In VBA gibt es kein direktes continue-Schlüsselwort, aber Du kannst die Funktionalität mit einer If-Anweisung nachahmen, um die Schleife an einem bestimmten Punkt fortzusetzen.

    For i = 1 To 100
       If i = 10 Then GoTo NextIteration
       ' Weitere Anweisungen
    NextIteration:
    Next i
  3. Schleifen mit Do While: Bei einer Do While-Schleife kannst Du ebenfalls Exit Do verwenden, um die Schleife zu beenden.

    Do While i < 100
       If i = 50 Then Exit Do ' Schleife wird bei i=50 verlassen
       i = i + 1
    Loop

Häufige Fehler und Lösungen

  • Fehler: Invalid use of property: Dieser Fehler tritt auf, wenn Du versuchst, eine Schleife mit einer falschen Syntax zu beenden. Stelle sicher, dass Du die richtigen Befehle wie Exit For oder Exit Do verwendest.

  • Lösung für continue-Ersatz: Wenn Du versuchst, das Verhalten von continue nachzuahmen und es nicht funktioniert, überprüfe, ob Du die richtigen Sprünge in Deiner Schleifenstruktur verwendest, wie in den obigen Beispielen gezeigt.


Alternative Methoden

Eine andere Möglichkeit, um Schleifen zu steuern, ist die Verwendung von Goto, um die Ausführung zu bestimmten Punkten in der Schleife zu leiten. Allerdings wird dies nicht empfohlen, da es den Code schwer verständlich macht und die Wartbarkeit beeinträchtigen kann.

For i = 1 To 10
    If i = 5 Then GoTo Skip
    Debug.Print i
Skip:
Next i

Praktische Beispiele

  • Beispiel 1: Vorzeitiger Abbruch einer Schleife:

    For i = 1 To 10
       If i = 8 Then Exit For ' Schleife wird bei i=8 verlassen
       Debug.Print i
    Next i
  • Beispiel 2: Fortsetzen einer Schleife:

    For i = 1 To 10
       If i = 5 Then GoTo Continue
       Debug.Print i
    Continue:
    Next i

Diese Beispiele zeigen, wie Du die For-Schleife effektiv steuern kannst, um die gewünschten Ergebnisse zu erhalten.


Tipps für Profis

  • Verwende Exit, um unnötige Verschachtelungen zu vermeiden. Das macht Deinen Code sauberer und einfacher zu lesen.
  • Halte Deine Schleifen so einfach wie möglich. Übermäßige Sprünge (wie Goto) können den Code komplizierter machen.
  • Teste Deine Schleifen gründlich, um sicherzustellen, dass sie unter allen Bedingungen wie gewünscht funktionieren.

FAQ: Häufige Fragen

1. Kann ich continue in VBA verwenden? VBA hat kein direktes continue-Schlüsselwort, aber Du kannst die Funktionalität mit If-Anweisungen nachahmen.

2. Wie kann ich eine While-Schleife vorzeitig abbrechen? Du kannst Exit While verwenden, um eine While-Schleife bei einer bestimmten Bedingung zu beenden.

3. Was ist der Unterschied zwischen Exit For und Exit Do? Exit For wird verwendet, um eine For-Schleife zu verlassen, während Exit Do für Do While- oder Do Until-Schleifen verwendet wird.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige