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

Schleifendurchlauf überspringen

Forumthread: Schleifendurchlauf überspringen

Schleifendurchlauf überspringen
07.02.2003 12:44:53
Cindy
Hi Jungs,

Ich will eine Schleife in meinem Makro egal ob while oder for.
In der Schleife soll eine If Then bedingung abgefragt werden, wenn diese Bedingung erfüllt ist soll der momentane Schleifendurchlauf abgebrochen werden und beim nächsten Durchlauf weitergemacht werden.
Hab in der Hilfe nur Exit For gefunden, da springt er aber aus der schleife. Ich will das er die Schleife fortsetzt.
Da kennt ihr doch bestimmt einen Befehl, oder???
Gruß Cindy

Anzeige

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

Betreff
Datum
Anwender
Anzeige
Re: Schleifendurchlauf überspringen
07.02.2003 12:48:43
Philipp

Hallo

Ich versteh zwa nicht genau deine Frage, aber ich glaube dein Problem kann mit einem Sprung (zwar unschön) gelöst werden.
z.B.

For x = 1 to 10
If d> 10 then
sprung
end if
.
.
.
.
sprung:
next x

Gruss Phil

Hoffe geholfen zu haben

Re: Schleifendurchlauf überspringen
07.02.2003 12:50:55
Bernd Held

Hallo Cindy,
ich sehe nur die etwas verpönte Methode in diesem Fall mit der Anweisung GoTo zu arbeiten und innerhlab der Schleife an eine andere Stelle zu springen. GoTo entspricht zwar nicht den allgemein gültigen Programmierregeln, aber was solls solange es funktioniert. Siche rgibt es eine bessere Lösung, aber vielleicht komst Du mit dieser zu Recht.

For i=1 to 100
if cells(i,1).value="test" then goto überspr
'hier stehen Deine normalen Aktionen..
überspr:

next i

Viele Grüße
Bernd
MVP für Microsoft Excel
Excel-Tipps, VBA in 21 Tagen und VBA-Datenbank unter: http://held-office.de


Anzeige
Re: Schleifendurchlauf überspringen
07.02.2003 12:51:40
Nepumuk

Hi Mädel,
in einer For - Next - Schleife einfach den Schleifenzähler um einen Schritt hochsetzen.

For zähler = 1 to 100
If deineBedingung = True Then
zähler = zähler + 1
Else
.
.
.
End If
Next zähler

In einer While - Wend - Schleife läuft eigentlich kein zähler mit.

Gruß
Nepumuk


Anzeige
Re: Schleifendurchlauf überspringen
07.02.2003 12:53:13
L.Vira

Und was ist mit den Mädels?
Msgbox wird nur angezeigt, wenn die Bedingung erfüllt ist:
Option Explicit
Sub Schleife()
Dim Z As Long
For Z = 1 To 100
If Cells(Z, 1) <> "" Then
MsgBox "testen"
End If
Next
End Sub

Re: Schleifendurchlauf überspringen
07.02.2003 14:37:10
Martin Beck

Hallo Bernd, Hallo Cindy,

m.E. ist das GoTo nicht notwendig. Man muß doch in der IF-Bedingung nur das logische Gegenteil abprüfen.

Statt

For i=1 to 100
if cells(i,1).value="test" then goto überspr
'hier stehen Deine normalen Aktionen..
überspr:
next i

also

For i=1 to 100
if cells(i,1).value<>"test" then
'hier stehen Deine normalen Aktionen..
end if
next i

Gruß
Martin Beck

Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Schleifendurchlauf in VBA überspringen


Schritt-für-Schritt-Anleitung

Um in einer VBA For Schleife einen Durchlauf zu überspringen und zur nächsten Iteration zu gelangen, kannst du eine If-Bedingung verwenden. Hier ist eine einfache Anleitung:

  1. Öffne den VBA-Editor in Excel mit ALT + F11.

  2. Erstelle ein neues Modul über Einfügen > Modul.

  3. Füge den folgenden Code ein:

    Sub SchleifeBeispiel()
       Dim i As Integer
       For i = 1 To 10
           If Cells(i, 1).Value = "Überspringen" Then
               ' Überspringe diesen Durchlauf
               GoTo Nächster
           End If
           ' Normale Aktionen
           Cells(i, 2).Value = "Verarbeitet"
       Nächster:
       Next i
    End Sub
  4. Schließe den VBA-Editor und führe das Makro aus.

In diesem Beispiel wird der aktuelle Schleifendurchlauf übersprungen, wenn die Zelle in Spalte A den Wert "Überspringen" hat.


Häufige Fehler und Lösungen

  • Fehler: vba continue for funktioniert nicht

    • Lösung: Stelle sicher, dass du die GoTo-Anweisung richtig verwendest. Manchmal kann es zu Verwirrung führen, wenn die Sprungmarke nicht korrekt ist.
  • Fehler: Schleife läuft endlos

    • Lösung: Achte darauf, dass du den Schleifenzähler nicht manuell erhöhst, wenn du Next erreichst. Dies kann zu einer falschen Schleifenlogik führen.

Alternative Methoden

Es gibt mehrere Ansätze, um einen Schleifendurchlauf in VBA zu überspringen:

  1. Verwendung von If-Bedingungen:

    For i = 1 To 100
       If Cells(i, 1).Value <> "test" Then
           ' Aktionen für gültige Werte
       End If
    Next i
  2. Do While-Schleifen:

    Dim i As Integer
    i = 1
    Do While i <= 100
       If Cells(i, 1).Value = "test" Then
           i = i + 1 ' Überspringe diesen Durchlauf
           Continue Do
       End If
       ' Aktionen
       i = i + 1
    Loop

Diese Methoden bieten dir Flexibilität bei der Handhabung von Schleifen.


Praktische Beispiele

Hier sind einige Beispiele, die zeigen, wie du in Excel VBA eine Schleife überspringen kannst:

  1. Beispiel mit MsgBox:

    Sub TestSchleife()
       Dim i As Integer
       For i = 1 To 5
           If i = 3 Then
               ' Überspringe Durchlauf 3
               GoTo Nächster
           End If
           MsgBox "Durchlauf " & i
       Nächster:
       Next i
    End Sub
  2. Beispiel mit Datenverarbeitung:

    Sub DatenVerarbeiten()
       Dim i As Integer
       For i = 1 To 10
           If Cells(i, 1).Value = "" Then
               ' Überspringe leere Zellen
               GoTo Nächster
           End If
           Cells(i, 2).Value = Cells(i, 1).Value * 2
       Nächster:
       Next i
    End Sub

Tipps für Profis

  • Vermeide GoTo-Anweisungen: Sie können den Code schwer lesbar machen. Versuche, logische Bedingungen zu verwenden.
  • Nutze Do While oder For Each Schleifen: Diese können oft klarer strukturiert werden, besonders bei komplexen Bedingungen.
  • Testen und Debuggen: Nutze den Debugger, um zu sehen, wie der Code durch die Schleifen läuft, und stelle sicher, dass die Bedingungen richtig gesetzt sind.

FAQ: Häufige Fragen

1. Wie kann ich eine Schleife vorzeitig beenden? Du kannst eine Schleife mit Exit For oder Exit Do beenden. Dies führt dazu, dass die Schleife nicht mehr fortgesetzt wird.

2. Was ist der Unterschied zwischen For und While Schleifen? Eine For-Schleife wird für eine festgelegte Anzahl von Durchläufen verwendet, während eine While-Schleife so lange läuft, wie eine bestimmte Bedingung wahr ist.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige