Hallo,
zunächst mal hast du einen Tippfehler im Namen deiner Variable. Bei DatumDiffernz fehlt ein e. Dadurch wird der Variablen zwar ein Wert zugewiesen, dieser kommt aber in der nachfolgenden Zeile nicht an. Da du dort korrekt geschrieben hast handelt es sich um zwei verschiedene Variablen. Die Variable DatumDifferenz bleibt also beim Wert 0.
Zweitens verwendest du die Variable SelectierteZelle bereits, bevor du dieser einen Wert zuweist. Damit ist auch diese Variable zunächst 0. Du rechnest also Schleifenende = 0 + 0 Damit ist letztlich auch Schleifenende 0. Du musst also die Befehlszeilen für Schleifenende und SelectierteZelle tauschen.
Da du vor Schleifenbeginn der Variablen SelectierteZelle die Selection.Row zuweist, ist nun Schleifenende < SelectierteZelle. In diesem Fall wird die Schleife gar nicht erst ausgeführt.
Selbst wenn die Schleife ausgeführt würde, hättest du nicht das gewünschte Ergebnis. Denn es würde kein Datum eingetragen sondern die Zeilennummer die du in der Variablen z gespeichert hast.
Tipps: All das kannst du leicht herausfinden, wenn du dein Makro per Einzelschritt mit F8 Zeile für Zeile durchgehst. Einfach mit der Maus auf die jeweilige Variable zeigen, nachdem du die Zeile ausgeführt hast, dann erscheint ein kleines Tiptext-Fenster das dir den Inhalt der Variablen anzeigt. Du kannst auch zusätzliche Befehle wie Debug.Print Variablenname einbauen, der dir den Inhalt der Variablen in einem dafür vorgesehenen Fenster im VBA-Editor wiedergibt.
Tippfehler bei Variablennamen kannst du vermeiden, indem du als allererste Zeile (noch vor der ersten Sub) den Befehl Option Explicit einbaust. Dann musst du allerdings jede einzelne Variable zu Beginn mit Dim deklarieren, was du bereits gemacht hast.
Um der Variablen z das laufende Datum zuzuweisen musst du die Schleife wie folgt generieren: For z = Datum1 To Datum2 Dann kannst du wie geplant den Inhalt von z der Zelle zuweisen. Hier der ganze Code:
Option Explicit
Private Sub CommandButton4_Click()
'Datumsschleife durchführen!
Dim i As Long
Dim z As Date
Dim Datum1 As Date
Dim Datum2 As Date
Datum1 = ActiveSheet.Range("D1")
Datum2 = ActiveSheet.Range("F1")
For z = Datum1 To Datum2
Cells(Selection.Row + i, Selection.Column) = z
i = i + 1
Next z
End Sub
Gruß Mr. K.