Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

aus 2 for-schleifen gleichzeitig springen

Forumthread: aus 2 for-schleifen gleichzeitig springen

aus 2 for-schleifen gleichzeitig springen
10.09.2003 09:04:47
rahel
hallo zusammen.

wie kann ich aus zwei for-schleifen gleichzeitig springen?
ich habe folgenden code:
matchFlag = False

For i = 2 To iRows

actSec = Sheets("Daten").Cells(i, 3).Value
For x = 2 To 34
For y = 3 To 9
Sheets("Referenzen").Activate
Cells(x, y).Activate
If Sheets("Referenzen").Cells(x, y).Value = actSec Then
matchFlag = True
Exit For
End If
Next y
Next x

If matchFlag <> True Then
Sheets("Daten").Rows(i & ":" & i).Activate
Selection.Delete shift:=xlUp
End If

Next i

wenn nun mein boolescher Wert matchFlag true wird, dann möchte ich aus den innersten beiden for-schleifen springen. wie sieht das aus? mit exit for kann ich nur aus der innersten schleife springen.

gruss, rahel
Anzeige

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: aus 2 for-schleifen gleichzeitig springen
10.09.2003 09:09:23
Andreas Walter
Die Frage habe ich vor längerer Zeit als mit Excel Anfing auch gefragt.

Die Lösungesvorschläge waren
a) Nicht zwei mal FOR, sondern Einmal FOR und einmal DO oder WHILE oder was anderes
b) Oder - wenn ich Dein Beispiel nehmen darf
For x = 2 To 34
For y = 3 To 9
Sheets("Referenzen").Activate
Cells(x, y).Activate
If Sheets("Referenzen").Cells(x, y).Value = actSec Then
matchFlag = True
Exit For
End If
Next y
If matchFlag = True Then
Exit For
End If
Next x

Beide ziemlich unbefriedigend
Anzeige
AW: aus 2 for-schleifen gleichzeitig springen
10.09.2003 09:14:35
Lutz
Hallo Rahel,

vielleicht so:

If Sheets("Referenzen").Cells(x, y).Value = actSec Then
matchFlag = True
x = 34
Exit For
End If
AW: aus 2 for-schleifen gleichzeitig springen
10.09.2003 09:11:04
OttoH
Hallo Rahel,

mach's doch einfach mit GoTo Schleifenende und setze hinter next x die Zeile Schleifenende:
Ist nicht ganz elegant, klappt aber.

Gruß
OttoH
Anzeige
vielen dank euch allen / o.T.
10.09.2003 10:10:52
rahel
AW: aus 2 for-schleifen gleichzeitig springen
10.09.2003 09:43:41
Harald Kapp
Du hast doch ohnehin das Flag, da geht's doch ohne Klimmzüge:

For x = 2 To 34
For y = 3 To 9
Sheets("Referenzen").Activate
Cells(x, y).Activate
If Sheets("Referenzen").Cells(x, y).Value = actSec Then
matchFlag = True
Exit For ' springt aus der inneren For Schleife
End If
Next y
'--------------
if matchFlag = True Then
Exit For ' Springt aus der äußeren For Schleife
End If
'--------------
Next x


Gruß Harald
Anzeige
;
Anzeige

Infobox / Tutorial

Aus zwei For-Schleifen gleichzeitig springen


Schritt-für-Schritt-Anleitung

Um aus zwei For-Schleifen gleichzeitig zu springen, gibt es verschiedene Ansätze, die Du nutzen kannst. Hier ist eine Schritt-für-Schritt-Anleitung, die auf den Vorschlägen aus dem Forum basiert:

  1. Verwende ein Flag: Du kannst ein boolesches Flag wie matchFlag nutzen, um zu überprüfen, ob die innere Schleife verlassen werden soll.

  2. Ändere die Schleifenstruktur: Statt zwei verschachtelter For-Schleifen, kannst Du die innere Schleife mit einer If-Bedingung und einem Exit For kombinieren.

matchFlag = False

For i = 2 To iRows
    actSec = Sheets("Daten").Cells(i, 3).Value
    For x = 2 To 34
        For y = 3 To 9
            Sheets("Referenzen").Activate
            Cells(x, y).Activate
            If Sheets("Referenzen").Cells(x, y).Value = actSec Then
                matchFlag = True
                Exit For
            End If
        Next y
        If matchFlag Then Exit For
    Next x

    If matchFlag <> True Then
        Sheets("Daten").Rows(i & ":" & i).Delete shift:=xlUp
    End If
Next i
  1. Beende die Schleifen: Nach dem Setzen des Flags kannst Du die äußere Schleife mit einem weiteren Exit For beenden.

Häufige Fehler und Lösungen

  • Problem: Das Flag wird nicht richtig gesetzt.

    • Lösung: Überprüfe, ob das Flag an der richtigen Stelle gesetzt wird, bevor Du die Schleifen verlässt.
  • Problem: Die Schleifen laufen länger als notwendig.

    • Lösung: Setze das Flag so früh wie möglich, um unnötige Iterationen zu vermeiden.

Alternative Methoden

Falls Du eine weniger elegante, aber funktionale Lösung bevorzugst, kannst Du die GoTo-Anweisung verwenden. Hier ein Beispiel:

matchFlag = False

For i = 2 To iRows
    actSec = Sheets("Daten").Cells(i, 3).Value
    For x = 2 To 34
        For y = 3 To 9
            Sheets("Referenzen").Activate
            Cells(x, y).Activate
            If Sheets("Referenzen").Cells(x, y).Value = actSec Then
                matchFlag = True
                GoTo Schleifenende
            End If
        Next y
    Next x
    Schleifenende:

    If matchFlag <> True Then
        Sheets("Daten").Rows(i & ":" & i).Delete shift:=xlUp
    End If
Next i

Praktische Beispiele

Hier ist ein praktisches Beispiel, wie Du die oben genannten Methoden in der Praxis anwenden kannst. Angenommen, Du hast eine Liste von Werten in einem Arbeitsblatt und möchtest diese mit einer Referenzliste abgleichen:

  1. Setze deine Daten: Stelle sicher, dass Deine Daten im Arbeitsblatt "Daten" und die Referenzen im Arbeitsblatt "Referenzen" korrekt eingetragen sind.

  2. Nutze den Code: Implementiere den VBA-Code in einem Modul, um die Schleifen zu steuern und gegebenenfalls Werte zu löschen.

  3. Teste den Code: Führe den Code aus und überprüfe, ob die gewünschten Werte korrekt gelöscht wurden.


Tipps für Profis

  • Verwende Do While-Schleifen: Für komplexere Logik kann es hilfreich sein, Do While-Schleifen anstelle von For-Schleifen zu verwenden.

  • Fehlerbehandlung einbauen: Denke daran, Fehlerbehandlungsroutinen einzufügen, um mögliche Laufzeitfehler abzufangen.

  • Code optimieren: Reduziere die Anzahl der Zellaktivierungen, um die Performance zu steigern. Verwende stattdessen Variablen, um auf die Werte zuzugreifen.


FAQ: Häufige Fragen

1. Frage
Wie kann ich die Schleifenstruktur anpassen, um die Lesbarkeit zu verbessern?
Antwort: Statt verschachtelter Schleifen kannst Du die Logik in separate Funktionen auslagern, die dann aufgerufen werden.

2. Frage
Funktioniert dieser Code in allen Excel-Versionen?
Antwort: Ja, der gegebene Code funktioniert in den meisten modernen Excel-Versionen, die VBA unterstützen.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige