Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1312to1316
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 über Makro steuern

Autofilter über Makro steuern
24.05.2013 07:43:14
Robert
Guten Tag,
ich stehe vor folgendem Problem, bei dem ich noch keine Lösung gefunden habe.
In Tabellenblatt „A“ befinden sich Datensätze, welche u.a. ein Datum enthalten. Im Tabellenblatt „B“ sollen diese Daten über diverse Formeln ausgewertet werden. Dabei soll auch das Datum der in Tabellenblatt A selektierten Daten über ein Datum eingeschränkt werden. Dementsprechend ist im Tabellenblatt A auch der Autofilter aktiviert. Idealerweise wird das entsprechende Datum im Tabellenblatt B angegeben. Das Datum wird über den Microsoft Daten and Time Picker Control 6.0 in die Zellen C7 und C8 geschrieben.
Nun habe ich bisher folgenden Code in VBA erstellt, welcher zwar das korrekte Datum in den Autofilter unter Benutzerdefiniert einträgt, aber leider werden die Daten nicht selektiert sondern es werden alle Zeilen ausgeblendet! Um nun den gewünschten Zeitraum auszuwählen muss ich händisch nochmals den Autofilter anwählen und dann nur noch bestätigen – ohne die eingetragenen Werte anzufassen.
Dim start As Date
Dim ende As Date
start = Range("C7")
ende = Range("C8")
Sheets("A").Select
ActiveSheet.Range("$A$1:$Q$35802").AutoFilter Field:=1, Criteria1:= _
">= " & start, Operator:=xlAnd, Criteria2:=" Sheets("B").Select
Wisst ihr, wo ich den Fehler habe?
Vielen Dank!
Viele Grüße

10
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Autofilter über Makro steuern
24.05.2013 08:02:59
Klaus
Hallo Robert,
das sieht einfach aus. Magst du bitte eben deine Datei hochladen? Kannst ja alle (geheimen?) Inhalte ausser den Datümern durch "XXX" ersetzen.
.select und .activate sind fast nie notwendig!
Grüße,
Klaus M.vdT.

AW: Autofilter über Makro steuern
24.05.2013 08:36:30
Robert
Hallo Klaus,
die Datei ist über folgenden Link erreichbar:
https://www.herber.de/bbs/user/85496.xlsm
Den Datentyp auf Long zu stellen bringt leider keine Verbesserung.
VG, Robert

AW: Autofilter über Makro steuern
24.05.2013 08:48:30
Klaus
Hi Robert,
mit Kommentaren:
Sub Makro1()
'Tatsächlich LONG und nicht DATE ...
Dim start As Long
Dim ende As Long
'warum der Umweg über die Zellen? Weise den variablen
'direkt die Werte der DtPicker zu!
start = Sheets("B").DTPicker1.Value
ende = Sheets("B").DTPicker2.Value
'der Autofilter verarbeitet die Datums intern als 5-stellige Zahl
'DtPicker gibt aber ein DD.MM.YYYY Datum zurück!
'Datum in Zahl umwandeln (mit Format) und es läuft! (darum auch LONG)
Sheets("A").Range("$A$1:$Q$35802").AutoFilter Field:=1, _
Criteria1:=">= " & Format(start, "00000"), Operator:=xlAnd, _
Criteria2:="
Bei der Gelegenheit habe ich noch die Referenzierung verbessert und die SELECT und ACTIVATE rausgeworfen.
Wenn du testest: In deiner Musterdatei sind die Datümer aus 2011 und 2012, du hattest aber 2013-er Datümer zum sortieren voreingestellt. Nicht dass du darauf hereinfällst :-)
Grüße,
Klaus M.vdT.

Anzeige
AW: Autofilter über Makro steuern
24.05.2013 08:59:48
Robert
Hallo Klaus,
vielen Dank, klappt wunderbar. Woher weiß man denn, dass der Autofilter das Datum auf die Zahl zurücksetzt? Gibt es einen Trick für die Fehleranalyse oder ist das Erfahrung und Wissen?
VG

AW: Autofilter über Makro steuern
24.05.2013 09:10:20
Klaus
Hallo Robert,
Woher weiß man denn, dass der Autofilter das Datum auf die Zahl zurücksetzt?
das wusste ich, bis vor ein paar Minuten, selber noch nicht.
Aber wie Excel mit Datums umgeht ist bekannt, eben dass diese intern als 00000,00 abgespeichert werden. Das kannst du mal ausprobieren, indem du ein Datum in einer Excelzelle markierst und dort als "Standard" Formatierst. Heute ist für Excel der 41418te :-)
Das geht auch andersrum: schreibe "41417" in eine Zelle und formatiere diese dann als Datum. Du siehst: es ist gestern.
Aus dem Wissen wie Excel in Datumsfragen "tickt" hab ich das für den Autofilter einfach per "Try and Error" herausgefunden, indem ich ein paar Sachen probiert habe.
Mein erster Versuch war
Criteria2:="

mit der Idee: "Vielleicht übergibt die variable das Datum als Zahl? Dann setzte ich es wieder als Datum, um zu filtern". Hat nicht geklappt :-)
Danach wusste ich: ein Datum im Format dd.mm.yyyy wird vom Filter nicht akzeptiert.
Eine Testzeile "debug.print ende" und "debug.print sheets("B").dtpicker1.value" hat mir gezeigt, dass die variablen die Werte tatsächlich im dd.mm.yyyy Format speichern.
Danach war mir klar, dass ich die Datums ins 00000,00 Format zurück schreiben muss um zu filtern.
Getestet, lief. Was gelernt, und im Forum geholfen - heute ist ein guter Tag! ;-)
VBA ist keine Raketenwissenschaft! Etwas Wissen bekommst du im Forum, etwas Erfahrung bringt die Zeit mit sich. Dann etwas gesunde Neugier und einfach ein paar Sachen probieren. Immer im Wissen: Der Computer explodiert bei falschen Codezeilen nur ganz selten!
Grüße,
Klaus M.vdT.

Anzeige
AW: Autofilter über Makro steuern
24.05.2013 09:23:06
Robert
Hallo Klaus,
vielen Dank!
Das mit der Zählweise des Datums war mir bekannt, leider habe ich noch eine Lücke bei den Variablen.. Aber das sehe ich genauso wie Du. Probieren hilft viel!
Besten Dank nochmals und ein schönes Wochenende.
Viele Grüße
Robert

Danke für die Rückmeldung! owT.
24.05.2013 09:26:08
Klaus
.

OT @Klaus
24.05.2013 09:32:08
hary
Moin Klaus
Hatte auch schon mal ein Problem mit Filtern(Datum aus Textbox). Da gibt es Unterschiede zwischen den Versionen. Luschi hat es so geloest.
Dim i As Long
With Worksheets("Zeiterfassung") 'Name anpassen
i = .Cells(.Rows.Count, 4).End(xlUp).Row
Debug.Print "=" & Format(Textbox1.Value, "dd.MM.yyyy") & "*"
Select Case Val(Application.Version)
Case 11, 12     'E2003, E2007
Debug.Print Format(Textbox1.Value, "M\/dd\/yyyy")
.Range("D6:D" & i).AutoFilter Field:=1, Criteria1:=Array(2, Format(Textbox1.Value, _
"M\/dd\/yyyy")), Operator:=xlAnd
Case 14, 15     'E2010, E2013
Debug.Print "=" & Format(Textbox1.Value, "dd.MM.yyyy")
.Range("D6:D" & i).AutoFilter Field:=1, Criteria1:="=" & Format(Textbox1.Value, " _
dd.MM.yyyy"), Operator:=xlAnd
End Select
'.Range("B1:J" & i).PrintOut 'oder .Range("B6:J" & i)
'.Range("D6:D" & i).AutoFilter
End With

gruss hary

Anzeige
AW: Autofilter über Makro steuern
25.05.2013 11:51:31
Beverly
@All,
in Excel2010 funktionert es auch, indem man CDbl verwendet:
Sub Makro1()
' Makro1 Makro
With Worksheets("A").Range("$A$1:$Q$35802")
.AutoFilter Field:=1
.AutoFilter Field:=1, Criteria1:=">= " & CDbl(Range("C7")), _
Operator:=xlAnd, Criteria2:="


AW: mit Long?
24.05.2013 08:07:06
hary
Hallo
probier mal variablen als Long.
Dim start As Long
Dim ende As Long
With Worksheets("B")
start = .Range("C7") 'steht in Blatt B
ende = .Range("C8")  'steht in Blatt B
Worksheets("A").Range("$A$1:$Q$35802").AutoFilter Field:=1, Criteria1:=">= " & start,  _
Operator:=xlAnd, Criteria2:="

gruss hary
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige