Live-Forum - Die aktuellen Beiträge
Datum
Titel
16.10.2025 17:40:39
16.10.2025 17:25:38
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: For-Next Schleife Ende

For-Next Schleife Ende
15.03.2005 16:20:35
Angi
Kann man den Wert für das Ende der For-Next Schleife ändern?
Ich vergleiche zwei Spalten. Wenn zwei Zellen gleich sind und sie in unterschiedlichen Zeilen stehen, verschiebe ich die Zeilen, so dass die Zellen nebeneinander stehen. Dadurch wird die Liste länger und der Wert für das Ende der Schleife sollte entsprechend hochgezählt werden.
Ich zähle zwar die Variable hoch, die Schleife bricht aber bei dem zuerst ersten definierten Wert ab.
Kann mir jemand helfen?
Anzeige

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

Betreff
Datum
Anwender
Anzeige
AW: For-Next Schleife Ende
15.03.2005 16:31:18
u_
Hallo,
das musst du mit einer Do...Loop-Schleife machen.
Gruß
AW: For-Next Schleife Ende
15.03.2005 16:31:58
Andi
Hi Angi,
bei for...next geht das nicht.
Probier mal irgendwas in der Richtung aus:
Do While a &lt b
'hier kommt Dein code rein
a = a + 1
Loop
das Abbruchkriterium b kann hier auch während der Schleifendurchläufe verändert werden.
Schönen Gruß,
Andi
Anzeige
AW: For-Next Schleife Ende
15.03.2005 16:41:12
Angi
Vielen Dank. Das hilft mir weiter! Werd ich gleich mal einbauen.
Grüße, Angi
AW: For-Next Schleife Ende
15.03.2005 16:45:06
Luc
Hallo Angi,
zwar ohne Anrede u.Gruß, aber die Antwort hast du ja trotzdem schon. Nur noch ein Hinweis:
Wenn du deinen Code schrittweise abarbeitest, wirst du bemerken, das der Kopf einer For...Next-Schleife nur 1x berührt wird. VBA merkt sich die dort definierten Werte. Dann kannst du im Nachhinein ändern wollen wie du willst, beim einmal angegebenen Wert hört's auf. Nur bei For-Schleifen, die die Laufvariable nicht noch für andere Zwecke benutzen, könntest du über eine Verminderung des Werts der Laufvariablen längere Laufzeiten erreichen. In den Do- und While-Schleifen wird der Wert im Schleifenkopf (bzw -fuß) bei jedem Durchlauf neu verglichen. Das ist übrigens in allen Programmiersprachen so!
Gruß Luc ;-?
Anzeige
AW: For-Next Schleife Ende
Angi
Hallo Luc,
entschuldigung, ich war wirklich unhöflich.
Vielen Dank für Deine ausführliche Erklärung. Damit weiss ich dann in Zukunft, worauf ich achten muss, wenn etwas nicht funktioniert.
Ich mach nur recht selten was mit VBA und verbringe viel Zeit mit Suchen in der Hilfe. Aber die Info habe ich nirgends gefunden.
Viele Grüße, Angi
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

For-Next Schleife in VBA richtig nutzen


Schritt-für-Schritt-Anleitung

  1. Schreibe die For-Next Schleife: Beginne mit der Definition deiner Schleife. Zum Beispiel:

    For i = 1 To 10
       ' Dein Code hier
    Next i
  2. Ändere den Schleifenwert in einer Do-While Schleife: Wenn du den Endwert dynamisch anpassen möchtest, solltest du eine Do-While Schleife verwenden:

    a = 1
    Do While a < b
       ' Dein Code hier
       a = a + 1
    Loop
  3. Verwende die Laufvariable: Achte darauf, dass die Laufvariable nicht für andere Zwecke genutzt wird, um unerwartete Ergebnisse zu vermeiden.


Häufige Fehler und Lösungen

  • Schleife bricht ab, bevor sie endet: Wenn du eine For-Next Schleife verwendest, kann die Schleife nicht angepasst werden, nachdem sie einmal definiert wurde. Wechsle zu einer Do-While oder Do-Until Schleife, um die Iterationen zu steuern.

  • Unerwartete Endwerte: Wenn der Endwert der Schleife nicht korrekt ist, überprüfe, ob dieser Wert außerhalb der Schleife geändert wird. In einer For-Next Schleife wird der Endwert nur einmal beim Start der Schleife festgelegt.


Alternative Methoden

  • Do-While Schleife: Diese Methode ist flexibler, da du während der Ausführung den Wert für das Ende der Schleife ändern kannst. Der Code könnte so aussehen:

    Dim i As Integer
    i = 1
    Do While i <= 10
       ' Dein Code hier
       i = i + 1
    Loop
  • For Each Schleife: Wenn du durch eine Sammlung von Objekten iterieren möchtest, ist die For Each Schleife ideal. Beispiel:

    Dim cell As Range
    For Each cell In Range("A1:A10")
       ' Dein Code hier
    Next cell

Praktische Beispiele

  • Vergleich zweier Spalten: Wenn du Werte in zwei Spalten vergleichen und anpassen möchtest:

    Dim i As Integer
    Dim lastRow As Integer
    lastRow = Cells(Rows.Count, 1).End(xlUp).Row
    For i = 1 To lastRow
       If Cells(i, 1).Value = Cells(i, 2).Value Then
           ' Zeilen anpassen
       End If
    Next i
  • Dynamische Anpassung: Um die Listendauer zu verändern, wechsle zu einer Do-While Schleife:

    Dim a As Integer
    a = 1
    Do While a <= lastRow
       If Cells(a, 1).Value = Cells(a, 2).Value Then
           ' Zeilen verschieben
           lastRow = lastRow + 1 ' Beispiel für dynamische Anpassung
       End If
       a = a + 1
    Loop

Tipps für Profis

  • Nutze Option Explicit am Anfang deiner Module, um sicherzustellen, dass alle Variablen deklariert sind. Dies hilft, Fehler in der Logik zu vermeiden, besonders bei vba for schleife Konstrukten.

  • Dokumentiere deinen Code mit Kommentaren, besonders in komplexen Schleifen, um die Lesbarkeit und Wartbarkeit zu erhöhen.

  • Vermeide es, die Laufvariable in einer For-Next Schleife zu manipulieren, da dies zu unerwartetem Verhalten führen kann.


FAQ: Häufige Fragen

1. Kann ich den Endwert einer For-Next Schleife während der Ausführung ändern?
Nein, der Endwert wird einmal beim Start der Schleife festgelegt. Wenn du den Endwert dynamisch anpassen möchtest, solltest du eine Do-While Schleife verwenden.

2. Wie funktioniert die Do-While Schleife in VBA?
Die Do-While Schleife erlaubt es dir, eine Bedingung vor und nach jedem Durchlauf zu überprüfen, sodass du den Schleifenwert jederzeit anpassen kannst. Dies macht sie flexibler als die For-Next Schleife.

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