Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
VBA Filterfunktion funktioniert nicht?
31.01.2023 07:26:39
Addi
Hallo Zusammen,
ich versuche eine Tabelle auf Datumsbasis zu Filtern. Datum steht in Spalte A und ist auch als Datum formatiert.
Mit folgendem Coding versuche ich den Filter zu setzten und auszuführen:
...
Dim intFR As Integer
Dim datStart As Date
Dim datEnde As Date
Sheets("FONDSVOLUMEN").Select
intFR = Cells(Rows.Count, 1).End(xlUp).Row
datStart = InputBox("Bitte Startdatum eintragen", "Startdatum")
datEnde = InputBox("Bitte Enddatum eintragen", "Enddatum")
ActiveSheet.Range("$A$1:$J$" & intFR).AutoFilter Field:=1, _
Criteria1:=">=" & datStart, Operator:=xlAnd, Criteria2:="=" & datEnde
...
Hiermit erreiche ich das die korrekten Werte in den Filter hinterlegt werden, sprich das Startdatum und Enddatum aus den InputBoxen werden korrekt übergeben, aber
der Filter wird nicht ausgeführt. Wenn ich mir in der Tabelle den Filter anschaue ist der wie gesagt korrekt gefüllt...wenn ich dann in dem unveränderten Filter nur auf "OK" klicke wird er auch ausgeführt...
...nur über das Makro funktioniert das nicht...
Mache ich da was falsch - bzw. fehlt da was?
Habe auch schon mit: AcitveSheet.AutoFilter.ApplyFilter ausprobiert - tut sich aber auch nix?
Vielen Dank für Eure Hilfe...leider kann ich keinen Upload machen...
Viele Grüße
Addi

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA Filterfunktion funktioniert nicht?
31.01.2023 07:59:16
Addi
Hi Yal,
perfekt - damit funktioniert es!!!
Vielen Dank für Deine Hilfe!
VG Addi
AW: VBA Filterfunktion funktioniert nicht?
31.01.2023 07:52:49
GerdL
Hallo zus.
Der Double(Cdbl) ist beim Datum-Filtern "gefährlich". Ich nehme immer Long(CLng).
Sub Unit()
Dim intFR As Long
Dim datStart As Date
Dim datEnde As Date
Sheets("FONDSVOLUMEN").Select
intFR = Cells(Rows.Count, 1).End(xlUp).Row
datStart = InputBox("Bitte Startdatum eintragen", "Startdatum")
datEnde = InputBox("Bitte Enddatum eintragen", "Enddatum")
ActiveSheet.Range("$A$1:$J$" & intFR).AutoFilter
ActiveSheet.Range("$A$1:$J$" & intFR).AutoFilter Field:=1, _
Criteria1:=">=" & CLng(datStart), Operator:=xlAnd, Criteria2:="=" & CLng(datEnde)
End Sub
Gruß Gerd
Anzeige
AW: VBA Filterfunktion funktioniert nicht?
31.01.2023 08:00:51
Addi
Hallo Gerd,
auch Dir vielen Dank - ich habe den Hinweis von Yal schon integriert!
VG Addi
AW: VBA Filterfunktion funktioniert nicht?
31.01.2023 08:05:51
Yal
Hallo zusammen,
ja, richtig. CLng in dem Fall besser.
Als Ergänzung für Addi: ein Datum+Uhrzeit ist ein Zahl. Vor der Komma ist der Tag, hinter der Komma die Uhrzeit, z.B. 12 Std ist ein halber Tag, also 0,5.
CDbl konvertiert in einem Zahl mit Nachkommastellen, also Datum+Uhrzeit.
CLng konvertiert in einem Zahl ohne nachkommen, also nur Datum.
In deinem Fall wenig relevant, weil die Eingabe von Datum erfolgt per Hand. Aber beim nächsten vielleicht.
VG
Yal
AW: VBA Filterfunktion funktioniert nicht?
31.01.2023 12:47:34
Daniel
Hi
wenn du die Criterias des Autofilters mit Werten fütterst, dann müssen diese immer "amerikanisch" geschrieben sein, damit VBA die Werte richtig erkennt.
Dh bei Dezimalzahlen muss der Punkt als Dezimalzeichen verwendet werden und ein Datum muss in der Form MM/TT/JJJJ geschrieben sein (Monat vorne und der Slash als Trennzeichen).
an anderer Stelle ist das aber anders, dh wenn dein Datum datStart und datEnde in den String gewandelt wird, damit er mit dem ">=" bzw "=" zu einem Text verbunden werden kann, dann arbeitet VBA wieder Landestypisch, dh Deutsch und schreibt dein Datum als "TT.MM.JJJJ" (muss ja auch so sein, sonst würde die automatische Umwandlung bei der Übernahme des Textes aus der Textbox nicht funktionieren, da du hier sicherlich das Datum in Deutsch eingibst.
Da ein Datum für Excel eine Zahl ist, funktioniert der Autofilter auch mit dem Zahlenwert des Datums, daher die Konvertierung mit CLng (und du solltest jetzt auch verstehen, warum von den Kollegen CLng gegenüber CDbl bevorzugt wird.
wolltest du über Datum filtern, müsstest du das so schreiben:
..., Criteria1:=">=" & Format(datStart, "MM\/DD\/YYYY"), ...
Gruß Daniel
Anzeige

352 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige