Datumsabhängig Zeile einfügen

Dieser Thread ist Teil einer Diskussion zu einem Artikel:  Zum News-Artikel gehen

cesar

Stammgast
Guten Tag zusammen

Ich habe ein File, in welchem in der Spalte D Datum vorhanden sind. Ich will nun nach jedem Tagesdatum (siehe auch Anhang) eine Leerzeile einfügen und das klappt mit dem Makro soweit einwandfrei.

Public Sub zusätzliche_Zeilen()

Dim WkSh As Worksheet
Dim lZeile As Long

Application.ScreenUpdating = False

Set WkSh = ThisWorkbook.ActiveSheet

For lZeile = WkSh.Cells(Rows.Count, 4).End(xlUp).Row To 3 Step -1
If CDate(WkSh.Cells(lZeile, 4).Value) <> CDate(WkSh.Cells(lZeile - 1, 4).Value) Then
WkSh.Rows(lZeile).Insert shift:=xlDown

End If
Next lZeile

Application.ScreenUpdating = True

End Sub


Das Problem ist, dass das Makro nur bis zu D12 laufen darf, da in D11 kein Datum mehr vorhanden ist sondern die Überschrift und anschliessend Leerzellen in D1-D10. Wie erreiche ich das?
Aktuell bricht mit das Makro mit einem Fehler ab, da es bis D01 durchläuft.

Danke für alle Hinweise und Lösungen
cesar
 

Anhänge

  • Frage01.JPG
    Frage01.JPG
    37,2 KB · Aufrufe: 3

nochEinAndreas

Stammgast
Hallo cesar,
mach in der Zeile
Code:
For lZeile =
aus dem
Code:
To 3
ein
Code:
To 12
.

ich hoffe, dann klappt es.

Grüße, Andreas
 

cesar

Stammgast
Guten Morgen Andreas

Danke für deinen Hinweis.

Das hatte ich auch schon ausprobiert, hat aber nicht funktioniert.

Aber da du die Ursache am gleichen Ort siehst, habe ich jetzt die 12 durch 13 ersetzt und siehe da, es funktioniert einwandfrei. Warum aber die Zeile 12 nicht abgefragt werden darf, obwohl da ein Datum drin ist, verstehe ich nicht.

Ich danke dir für die Unterstützung (y)(y)
cesar
 

nochEinAndreas

Stammgast
Ja, sorry, mein Fehler.
Da in jedem Schleifendurchlauf getestet wird, ob die aktuelle Zelle ungleich der Zelle darüber ist, muss diese Zelle darüber auch ein Datum sein. Bei dem Test wird der Wert in den Zellen durch die Funktion CDate in ein Datum verwandelt. Wenn dort aber der Text "Datum" steht, gibt's einen Fehler. Also muss die Schleife in Zeile 13 enden. Da wird dann Zeile 13 mit Zeile 12 verglichen. Dort steht das oberste Datum.

Grüße, Andreas
 
Zuletzt bearbeitet:
Oben