Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1748to1752
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Autofilter manuell und mit VBA

Autofilter manuell und mit VBA
28.03.2020 10:24:50
Oberschlumpf
Hallo Leute,
ich verstehe das hier nicht:
Wenn ich in meiner Tabelle den Autofilter manuell mit diesen Werten aktiviere:
Spalte D (Datumswerte)
ist nach oder gleich 01.01.2020
und
ist vor oder gleich 31.03.2020
werden, wie gewünscht, nur die Zeilen gezeigt, deren Datum im Zeitraum 01.01.2020 bis 31.03.2020 liegt.
Nachdem ich die manuellen Schritte mit dem Recorder aufzeichnete, kam dieses Makro raus:
Sub Makro1()
ActiveSheet.Range("$A$1:$E$232").AutoFilter Field:=4, Criteria1:=">=01.01.2020", Operator:= _
xlAnd, Criteria2:="

Wenn ich nun aber das aufgezeichnete Makro starte, werden gar keine Zeilen mehr angezeigt!
ALLE Datenzeilen sind ausgeblendet!
Wieso?
Nach sehr vielen falschen Versuchen fand ich heraus, dass der folgende Code endlich wieder die gewünschten Datenzeilen für den festgelegten Zeitraum anzeigt:

ActiveSheet.Range("$A$1:$E$232").AutoFilter Field:=4, Criteria1:=">=01/01/2020",  _
Operator:=xlAnd, Criteria2:="03/31/2020"

Man achte auf die Datumsschreibweise.
Wieso ist es erforderlich, dass das Datum im Format mm/dd/yyyy und als Trennzeichen / angegeben werden muss?
Über eine hilfreiche Erklärung würde ich mich freuen.
Vielen Dank!
Ciao
Thorsten

13
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Autofilter manuell und mit VBA
28.03.2020 10:30:53
Hajo_Zi
Hallo Torsten,
VBA ist englisch, würde ich vermuten.

">=" & Cdate("01.01.2020")
oder
">=" & Cdbl("01.01.2020")

Gruß Hajo
AW: Autofilter manuell und mit VBA
28.03.2020 10:44:30
Oberschlumpf
Hallo HaJo,
und vielen Dank für dein Bemühen.
Aber leider werden auch bei Verwendung von CDate(...) oder CDbl(...) weiterhin alle Datenzeilen ausgeblendet.
Deinen Gedanken "VBA ist englisch" hatte ihc auch. Aus dem Grund änderte ich das Datumsformat in "mm/dd/yyyy", was ja zum Erfolg führte.
Nur trotzdem verstehe ich nicht, dass - nur diese - Version funktioniert.
Denn, zumindest für mich, wäre es genau so logisch, mit CDate oder CDbl zu arbeiten.
Aber VBA spielt da nicht mit..tzz :-)
Vielleicht hast do oder jemand anderes noch eine andere Idee?
Ciao
Thorsten
Anzeige
AW: Autofilter manuell und mit VBA
28.03.2020 11:14:17
Beverly
Hi Thorsten,
das ist zwar keine Antwort auf deine Frage des "Warum", aber die Benutzung von Datumswerten war schon immer sehr trickreich - ich mag mich irren, aber meine mich zu erinnern, dass das Datumsformat "mm/dd/yyyy" beim Autofilter in den Vorgängerversionen vor 2007 nicht verwendet wurde.
Man kann trotzdem auch CDate und CDbl verwenden - in dieser Kombination funktioniert es jedenfalls in Excel2016:
Criteria1:=">=" & CDbl(CDate("01.01.2020")), Operator:= xlAnd, Criteria2:="



Anzeige
AW: Autofilter manuell und mit VBA
28.03.2020 11:14:33
onur
"wäre es genau so logisch, mit CDate oder CDbl zu arbeiten.Aber VBA spielt da nicht mit..tzz :-)"
Nicht ODER sondern UND:
...Criteria1:= ">=" & CDbl(CDate("01.03.2020")), Operator:=xlAnd, Criteria2:="

Das Problem ist, daß der Makrorecorder die Eingabe des Datums im Format DD.MM.YYYY nicht als Datum anerkennt.
AW: Autofilter manuell und mit VBA
28.03.2020 11:16:14
onur
CLng UND CDate tut es aber auch.
Karin + onur(Name?)
28.03.2020 11:35:20
Oberschlumpf
Hallo ihr Beiden,
und vielen Dank!
JA, mit CDbl UND CDate funktionierts! (oder eben mit dem Format mm/dd/yyy)
Mein Fehler war (wie onur es wohl erkannte), dass ich...
Criteria1:=">=" & CDate("01.01.2020"), Operator:=xlAnd, Criteria2:="

ODER
Criteria1:=">=" & CDbl("01.01.2020"), Operator:=xlAnd, Criteria2:="

erfolglos probierte
Eure Bsp-Codes mit Cdbl(CDate(...)) führten mich auf die Spor zurück :-)
Und auch dein Hinweis, Karin, dass sich Excel mit Datumswerten schwer tun kann, hat mir sehr geholfen!
Vielen Dank euch Beiden.
Nun kann ich weitermachen und das hier behandelte Problem spukt nicht weiter in meinem Kopf rum :-)
Ciao
Thorsten
Anzeige
AW: Karin + onur(Name?)
28.03.2020 11:38:23
onur
Gerne.
Wie gesagt: CLng UND CDate tut es ebenso.
vielleicht hilft...
28.03.2020 11:10:31
Oberschlumpf
...eine Bsp-Datei von mir
Hallo noch mal,
ich - der am meisten Jammernde, wenn eine Bsp-Datei - nicht - geliefert wird, mache den selben Fehler...tztz
Hier:
https://www.herber.de/bbs/user/136186.xlsx
So ist auch die Originaldatei aufgebaut - nur eben alle Spalten, außer D, enthalten andere Inhalte ;-)
Wie schon in meinem Startbeitrag erwähnt:
Eine Lösung für mein Problem habe ich, ich möchte nur verstehen, wieso der vom Recorder erzeugte Code nicht funktioniert?
Weiter vielen Dank für eure Ideen!
Ciao
Thorsten
Anzeige
Selbsterkenntnis ist der beste Weg zur Besserung..
28.03.2020 11:30:01
EtoPHG
Thorsten,
In der Spalte D stehen keine DATUM sondern DATUM UND ZEIT.
Jetzt überlegen...(Representation auf dem Schirm, intern als Zellwert und Sprache von VBA...)
Gruess Hansueli
AW: Selbsterkenntnis ist der beste Weg zur Besserung..
28.03.2020 11:44:19
Oberschlumpf
Hi,
a) ja, du hast recht mit "Selbsterkenntnis usw"
Ich bin durchaus in der Lage, mit negativer Kritik erfolgreich umzugehen, bzw mein Verhalten immer wieder mal, auch ohne vorherige Aufforderung, selbst zu reflektieren. :-)
b) auch wenn in D Datum UND Zeit steht, funktioniert ja meine Lösung, wenn ich das Format mm/dd/yyyy verwende.
Ich wollte halt nur grundsätzlich verstehen, wieso der vom Recorder erzeugte Code nicht genau so funktioniert, wie aufgezeichnet?
Der Code MUSS angepasst werden.
Entweder mit den Vorschlägen von onur + Karin, oder eben mit weniger Änderungsaufwand mit der Änderung des Datumsformats.
Und dank Karins Hinweis/Idee/Vermutung, dass Excel nicht immer mit Datumswerten "richtig umgehen" kann, ist meine grundsätzliche Frage auch beantwortet.
Vielen Dank an alle.
Ciao
Thorsten
Anzeige
AW: Selbsterkenntnis ist der beste Weg zur Besserung..
28.03.2020 11:57:04
Daniel
Es ist an vielen Stellen so, dass Angaben, die du in Excel im landestypischen Format machst, bei Ausführung in VBA das Amerikanische Format erfordern.
Der Recorder zeichnet das auf, was du Excel eingibst.
Wenn jetzt Excel eine Eingabe in Deutsch erfordert, dann muss der Recorder dies auch so aufzeichnen.
Wenn aber die Ausführung in VBA diesen Wert im amerikanischen Format erfordert, kann der aufgezeichnete Code nicht funktionieren.
Gruß Daniel
AW: Selbsterkenntnis ist der beste Weg zur Besserung..
28.03.2020 13:07:59
Oberschlumpf
Hi Daniel,
und auch an dich vielen Dank für deine Erklärung. Nun verstehe ich es noch besser.
Ciao
Thorsten
Dann teste mal meinen Code in deiner Mappe - o.T.
28.03.2020 11:34:27
Beverly


Anzeige

301 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige