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

Do Loop oder For überspringen

Forumthread: Do Loop oder For überspringen

Do Loop oder For überspringen
02.08.2013 10:38:32
Thomas
Moin zusammen,
also entweder stehe ich auf dem Schlauch oder es geht wirklich nicht anders ;)
Ich habe eine Do-Loop-Kombination oder auch eine FOR-Next-Schleife.
IN der Schleife kann ich ja mit EXIT direkt rausspringen - allerdings wird dann abgebrochen - gibt es eine Möglichkeit mit einem Befehl direkt zum Loop/Next zu springen, also keinen weiteren Schleifen-Befehl mehr abzuarbeiten? damit dann direkt die Schleife wieder von vorne begonnen wird (und bei For-Next ja auch weiterzählt...)
Ich könnte eine Sprungmarke vor LOOP/NEXT einsetzen und per Goto dahin springen, aber kann man nicht auch direkt den Loop-Next-Punkt anspringen?
LG,
Tommi

Anzeige

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

Betreff
Datum
Anwender
Anzeige
AW: Do Loop oder For überspringen
02.08.2013 12:15:11
Rudi
Hallo,
du kannst doch eine Bedingung einbauen
do
if .. then
machwas
end if
Loop until ...
Gruß
Rudi

AW: Do Loop oder For überspringen
02.08.2013 12:17:52
Thomas
Hallo Rudi,
ja, so habe ich das auch gemacht, aber der Haken ist, ich bekomme mehr und mehr Abbruchbedingungen und die sind (übersichtlicher) in einzelnen IF-Abfragen untergebracht - und dann jeweils der direkte Sprung zum Ende der Schleife.
Ich hatte halt gehofft, das es sowas wie
if ... then goto loop/next y
geben würde.
Aber dann passt es schon. da brauche ich nicht länger zu suchen.
Danke!
Tommi

Anzeige
Abbruchbedingungen
02.08.2013 13:48:36
Rudi
Hallo,
die sind (übersichtlicher) in einzelnen IF-Abfragen untergebracht
evtl. besser mit Select Case
Gruß
Rudi

AW: Abbruchbedingungen
05.08.2013 12:02:01
Thomas
Hallo Rudi,
hm, also wenn ich mit IF arbeite, dann habe ich jeweils nur eine Zeile je Abfrage, denn mit dem THEN springt er ja direkt zum MARKER direkt vor dem Loop.
Mit SELECT CASE hätte ich ja auch noch die Definitionszeile und ENDSELECT mit drin, also rein optisch etwas länger...
Das Einzige was dafür sprechen würde, wird ein SELECT CASE mit 10 Fällen schneller abgearbeitet als 10 IF-Abfragen? - also aus Performancegründen würde ich da schon hin wechseln - auch wenn das (in dem Fall) nicht so arg wichtig wäre.
Tommi

Anzeige
AW: Do Loop oder For überspringen
02.08.2013 12:57:58
Frank88
Hallo Thomas,
mir würde dazu einfallen, den Schleifencode (nicht die Schleife) in eine Sub auszulagern, die dann per select case/if then angesprungen wird.
Kommt auf die gegenseitige Abhängigkeit der Bedingungen an und ob mal mehr und mal weniger Schleifencode ausgelassen/abgearbeitet werden soll.
Grüsse, Frank

Anzeige
AW: Do Loop oder For überspringen
05.08.2013 12:56:27
Thomas
Hallo Frank,
die Bedingungen sind völlig unabhängig voneinander und es wird immer der komplette Schleifencode übersprungen - wie gesagt, wenn alle Bedingungen 'greifen' würde ich es eh ins DO WHILE ... packen, nur da die Bedingungen erstmal zusammengesucht/entwickelt werden müssen, wollte ich es möglichst übersichtlich in einem IF THEN - Block direkt hinter dem DO packen.
Aber passt schon - ich denke zum Testen ist es mit dem IF-Block ganz okay, und später wird es optimiert oben eingebaut - ich war nur einfach etwas irritiert, das man nicht direkt das Schleifenende mit einem Befehl in einer Schleife anspringen kann. (so wie man eine Schleife ja auch mit EXIT verlassen kann)
Mit einer Sprungmarke direkt vor dem SEnde erreiche ich ja das Selbe.
LG,
Tommi
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Do Loop und For Schleifen in VBA effektiv nutzen


Schritt-für-Schritt-Anleitung

Um in VBA eine Do Loop oder eine For Schleife zu verwenden und diese effizient zu steuern, folgen hier die grundsätzlichen Schritte:

  1. Erstellen der Schleife:

    • Eine Do Loop sieht so aus:

      Do
       ' Code hier
      Loop Until Bedingung
    • Eine For Schleife wird so definiert:

      For i = 1 To 10
       ' Code hier
      Next i
  2. Abbruchbedingungen:

    • Du kannst innerhalb der Schleife Bedingungen einfügen, um die Ausführung zu steuern. Beispiel für eine Do Loop:
      Do
       If Bedingung Then Exit Do
       ' Weitere Anweisungen
      Loop
  3. Überspringen von Iterationen:

    • Um eine Iteration zu überspringen, kannst du die Continue For Anweisung nutzen. Dies ist in VBA allerdings nicht direkt verfügbar. Stattdessen kannst du eine If-Bedingung verwenden:
      For i = 1 To 10
       If i = 5 Then GoTo NächsteIteration
       ' Code für andere Iterationen
      NächsteIteration:
      Next i

Häufige Fehler und Lösungen

  • Fehler 1: Schleife wird nicht beendet: Stelle sicher, dass deine Abbruchbedingung korrekt definiert ist. Ein typischer Fehler ist, die Bedingung nie zu erreichen.

  • Fehler 2: Unendliche Schleife: Überprüfe, ob die Bedingung zur Beendigung wirklich erreicht wird. Eine unendliche Schleife kann dazu führen, dass Excel nicht mehr reagiert.

  • Fehler 3: Schleifen-Code nicht übersichtlich: Wenn du viele Bedingungen hast, die zu unterschiedlichen Punkten in der Schleife führen, kann dies die Lesbarkeit beeinträchtigen. Überlege, ob du die Logik in eine eigene Subroutine auslagern kannst.


Alternative Methoden

Wenn du eine For Schleife oder Do Loop verwendest und die Steuerung optimieren möchtest, kannst du folgende Alternativen in Betracht ziehen:

  • Select Case: Anstelle von vielen If-Bedingungen kann Select Case verwendet werden, um die Übersichtlichkeit zu verbessern. Beispiel:

    Select Case i
      Case 1
          ' Code für Fall 1
      Case 2
          ' Code für Fall 2
      ' Weitere Fälle
    End Select
  • Excel Do While: Eine andere Möglichkeit ist die Verwendung von Do While, die eine Schleife erstellt, die so lange läuft, wie eine Bedingung wahr ist:

    Do While Bedingung
      ' Code hier
    Loop

Praktische Beispiele

  1. Einfaches Do Loop Beispiel:

    Dim i As Integer
    i = 1
    Do
       If i > 5 Then Exit Do
       Debug.Print i
       i = i + 1
    Loop
  2. For Schleife mit Überspringen:

    Dim i As Integer
    For i = 1 To 10
       If i = 5 Then GoTo NächsteIteration
       Debug.Print i
    NächsteIteration:
    Next i

Tipps für Profis

  • Verwende Debugging: Nutze Debug.Print, um die Werte während der Schleifeniteration zu überwachen.

  • Optimierung: Wenn du viele Schleifen hast, überlege, ob du die Schleifen zusammenfassen kannst, um die Performance zu verbessern.

  • Code modularisieren: Lagere komplexe Schleifen in separate Subroutinen aus, um die Wartbarkeit zu erhöhen.


FAQ: Häufige Fragen

1. Wie kann ich eine Schleife vorzeitig beenden? Du kannst die Anweisung Exit Do oder Exit For verwenden, um die Schleife vorzeitig zu beenden.

2. Was ist der Unterschied zwischen Do Until und Do While? Do Until läuft, bis eine Bedingung wahr wird, während Do While so lange läuft, wie eine Bedingung wahr ist.

3. Wie kann ich mehrere Bedingungen in einer Do Loop überprüfen? Du kannst If...Then oder Select Case verwenden, um mehrere Bedingungen innerhalb der Schleife zu überprüfen und entsprechend zu handeln.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige