Ich versuche mit VBA eine Tabelle nach Datumsbereich zu filtern.
Zuerst wird nach der Spalte sortiert in der das Datum steht,
dann nach dem in eine TextBox eingegebenen Datum gefiltert.
Private Sub archiv()
Dim datum1 As Date
datum1 = CDate(TextBox1.Value)
With Worksheets("Rollendaten")
Key1:=Worksheets("Rollendaten").Columns("y"), _
Key2:=Worksheets("Rollendaten").Columns("b"), _
Key3:=Worksheets("Rollendaten").Columns("v"), Header:=xlYes
End With
Columns("Y:Y").AutoFilter Field:=1, Criteria1:=("<=" & datum1)
End Sub
Das funktioniert aber nicht, es wird kein Datum gefunden.
Im Autofilter finde ich anschließend unter "benutzerdefiniert" die
richtigen Einträge und ein Klick auf "OK" führt zum richtigen
Filterergebnis. Das Format des Datums ist z.B. 23.02.02
Über die Benutzeroberfläche funktionierts, über VBA nicht.
Was könnte die Ursache sein und welche Lösung gibt es?
mfg Harald
vielleicht solltest Du versuchen, das zu filternde Datum einer
(Object)Varablen zuzuweisen:
GesuchtesDatum = MsgBox()
Columns("Y:Y").AutoFilter Field:=1, Criteria1:=(GesuchtesDatum)
Ich hab es nicht probiert, aber es sollte doch gehen. Oder?
Wolfgang
"Harald Kante" <H.K...@web.de> schrieb im Newsbeitrag
news:Xns91BEBBB1...@mynews.hakaon.de...
Hi Harald,
versuchs mal so:
Dim datum1 As Long
datum1 = CLng(CDate(TextBox1.Value))
.
.
.
Columns("Y:Y").AutoFilter Field:=1, Criteria1:=("<=" & datum1)
cu
Stefan
GesuchtesDatum = MsgBox()
Datum = "<=" & Gesuchtes Datum
Columns("Y:Y").AutoFilter Field:=1, Criteria1:=(Datum)
Wolfgang
"Wolfgang Döbler" <doe...@freenet.de> schrieb im Newsbeitrag
news:3c77fa04$0$151$9b62...@news.freenet.de...
Hallo Harald,
vielleicht liegt es an folgendem (ich weiß leider nicht mehr,
woher ich das habe; der/die Autor(en) mögen mir das verzeihen):
<Zitatbeginn>
Excel speichert ein Datum als fortlaufende
Zahl. Stehen Ihre Filterkriterien für das Datum
in Zellen Ihres Arbeitsblattes, werden die Werte
zwar per VBA in den Dialog der benutzerdefinierten
Kriterien des AutoFilters eingetragen, aber
der Filter wird nicht angewendet, wenn das
Datum im Datumsformat übergeben wird. Das
geschieht aber, wenn Sie die Value-Eigenschaft
der entsprechenden Zellen nutzen. In diesem
Fall verwenden Sie stattdessen
die Value2-Eigenschaft
<Zitatende>
Beispiel, wenn in Zelle C3 das Datumskriterium steht:
ActiveSheet.Range("A6:C12").AutoFilter Field:=3, _
Criteria1:=">=" & Range("C3").Value2
Prüfe mal per Haltepunkt im VBA-Editor, was bei Dir
in datum1 steht ;-)
Mit freundlichem Gruß
Wilfried
Stefan Stoehr <stefan...@gmx.net> schrieb:
>versuchs mal so:
>
>Dim datum1 As Long
>datum1 = CLng(CDate(TextBox1.Value))
Danke, das war die Lösung :-))
mfg Harald
"Wolfgang Döbler" <doe...@freenet.de> schrieb:
>vielleicht solltest Du versuchen, das zu filternde Datum einer
>(Object)Varablen zuzuweisen:
>
>GesuchtesDatum = MsgBox()
>Columns("Y:Y").AutoFilter Field:=1, Criteria1:=(GesuchtesDatum)
Hat leider nicht funktioniert. Vieleicht habe ich Dich aber auch nur
nicht richtig verstanden, denn so viel Kennung habe ich in VBA nicht.
Der Vorschlag von Stefan hat mein Problem gelöst.
Ich danke Dir trotzdem für Deine Antwort.
mfg Harald
Wilfried Butzek <Wilfrie...@t-online.de> schrieb:
>Prüfe mal per Haltepunkt im VBA-Editor, was bei Dir
>in datum1 steht ;-)
Es stand natürlich das Datum im Datumsformat.
Ich hatte es ja extra so deklariert :-(
Da hatte ich allerdings Deinen Beitrag noch nicht gelesen ;-)
Stefan Stoehr hat auch schon die Lösung gepostet.
Vielen Dank Euch allen.
mfg Harald