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.