In diesem Beispiel ist in Spalte G ein Lieferdatum vorhanden, welches gefiltert werden soll, siehe Abbildung 1. Als Filterkriterium soll ein Datum >=19.08.2024 und <=25.08.2024 per VBA übergeben werden. Damit dies funktioniert, muss der das Datum beim Übergeben an den Autofilter entsprechend formatiert werden.

Sub Filter_setzen()
'** Dimensionierung der Variablen
Dim datVon As Date
Dim datBis As Date
'** Vorgaben definieren
Set wsdat = ThisWorkbook.Sheets("Daten")
'** Filter in Spalte G zurücksetzen
wsdat.Range("$E$10:$R$10000").AutoFilter Field:=3
'** Zeitangaben auslesen (von-bis)
datVon = "19.08.2024"
datBis = "25.08.2024"
'** Filter 1 in Spalte G "Lieferdatum" auf gewählten Zeitraum setzen
wsdat.Range("$E$10:$R$10000").AutoFilter Field:=3, Criteria1:= _
">=" & CLng(CDate(datVon)), Operator:=xlAnd, Criteria2:="<=" & CLng(CDate(datBis))
End Sub
Damit das Datum korrekt an die Filter-Methode als Kriterium1 (Datum von) und Kriterium2 (Datum bis) übergeben werden, muss das Datum mit den Textkonvertierungsfunktionen CLng() und CDate() in das richtige Format gebracht werden. Für das Kriterium1 (Datum von) sieht die Konvertierung damit wie folgt aus: CLng(CDate(datVon))
Nur so werden die Daten von der Filterfunktion erkannt und die Filterung per VBA korrekt durchgeführt.