Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1664to1668
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

For Schleife zählt nicht durch

For Schleife zählt nicht durch
14.01.2019 09:36:36
Steve
Hallo Leute,
ein ungewöhnliches Problem lässt mir momentan keine Ruhe. Ich habe eine (von vielen :) ) For-Schleife programmiert, welche aber nicht bis zum Ende durchzählt.
Anderes als bei normalen Schleifen, wird in dieser der Endwert bei manchen Schleifendurchläufen mit hinauf gezählt.
Zur Erklärung: Es werden Zeilen in einer Tabelle eingefügt, dadurch erhöht sich der Endwert "size", welcher die Gesamtanzahl der Zeilen darstellt. Die Zählvariable i läuft mit und sollte irgendwann den Endwert size erreichen.
Aus irgendeinem Grund springt VBA z.B.: bei i=16 und size = 23 aus der Schleife und beendet somit die function. Ist im Debugger recht klar zu erkennen, aber warum?
Das Marko funktioniert schon, wenn ich es mehrmals starte tut es auch genau da weiter, wo es soll, aber mehr als 3-5 Einträge (Neue Zeilen) schafft es nicht auf einmal - irgendwie alles komisch...
Hier der Code (vereinfacht)
For i = 3 To size
If Cells(i + 1, 12) - Cells(i, 12) > 1 Then
DateCounter = Cells(i, 12).Value
'Feiertagsabfrage
If Feiertag(DateCounter + 1) = False Then
'Wenn Wochenende dazwischen
If Cells(i, 2) = "Freitag" Then
ActiveSheet.Cells(i + 1, 1).EntireRow.Insert
Rows(i + 1).Interior.Color = vbGreen
Cells(i + 1, 2) = "Samstag"
'Wenn es ein Fehltag ist
Else
ActiveSheet.Cells(i + 1, 1).EntireRow.Insert
Rows(i + 1).Interior.Color = vbRed
Cells(i + 1, 11) = "Fehltag"
End If
Else
ActiveSheet.Cells(i + 1, 1).EntireRow.Insert
Rows(i + 1).Interior.Color = vbGreen
End If
size = ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row
Next i

End Function
Besten Dank im Voraus!

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

Betreff
Datum
Anwender
Anzeige
AW: For Schleife zählt nicht durch
14.01.2019 10:11:32
Daniel
Hi
In einer For-Next-Schleife wird der Schleifenendwert zu Beginn fixiert und ist danach nicht mehr veränderbar.
Wenn der Schleifendwert während des Schleifendurchlauf geändert wird, müsstest du eine Do-Loop-Schleife verwenden.
In deinem Fall könntest du aber auch die Schleife rückwärts laufen lassen, dann wirkte sich das Einfügen DIN dem Bereich aus, über den die Schleife schon gelaufen ist:
For i = size to 3 Step - 1
Gruß Daniel
AW: For Schleife zählt nicht durch
14.01.2019 10:15:50
Steve
Wahnsinn, da sieht man wieder das ich von Excel keine Ahnung habe. Ich glaube aber in Matlab geht das :D
Vielen Dank Daniel für die schnelle und kompetente Antwort!
Anzeige
AW: For Schleife zählt nicht durch
14.01.2019 10:12:06
Nepumuk
Hallo Steve,
kannst du eine Mustermappe hochladen? Aus deinem Codefragment geht nämlich nicht hervor was da schief läuft.
Gruß
Nepumuk
AW: For Schleife zählt nicht durch
14.01.2019 10:20:48
UweD
Hallo
Generell:

&GT&GT Es werden Zeilen in einer Tabelle eingefügt,

In solchen Fällen hilft es die Schleifen rückwärts abzuarbeiten
For i = size to 3 Step -1

Wenn ich dein makro mal strukturiere, scheint ein End If zu fehlen

For i = 3 To Size
If Cells(i + 1, 12) - Cells(i, 12) > 1 Then
DateCounter = Cells(i, 12).Value
'Feiertagsabfrage
If Feiertag(DateCounter + 1) = False Then
'Wenn Wochenende dazwischen
If Cells(i, 2) = "Freitag" Then
ActiveSheet.Cells(i + 1, 1).EntireRow.Insert
Rows(i + 1).Interior.Color = vbGreen
Cells(i + 1, 2) = "Samstag"
'Wenn es ein Fehltag ist
Else
ActiveSheet.Cells(i + 1, 1).EntireRow.Insert
Rows(i + 1).Interior.Color = vbRed
Cells(i + 1, 11) = "Fehltag"
End If
Else
ActiveSheet.Cells(i + 1, 1).EntireRow.Insert
Rows(i + 1).Interior.Color = vbGreen
End If
Size = ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row
        End If'#######fehlt?
Next i

Eine weitere Möglichkeit wäre Loop- Schleife zu verwenden
in der Art...

Size = ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row
Do Until i = Size
i = i + 1
Size = ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row
Loop

LG UweD
Anzeige
AW: For Schleife zählt nicht durch
14.01.2019 10:30:43
Steve
So viele Antworten in kurzer Zeit -Toll!
Habe es mit der Do Unitil .... Loop Variante realisiert.
Rückwärtszählen funktioniert nur wenn ich irgendwo sowas wie ein Go To einbaue (wenn eine Zeile eingefügt wird) damit er wieder oben beginnt.
Also Danke nochmal besonders an UweD - Ihr habt gerade Geld von meinem Chef eingespart :D
gern geschehen owT
14.01.2019 10:50:52
UweD

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige