Hallo an alle Wissenden.
Habe ein Problem, mit dem Befehl Filtern, übers Makro auszuführen.
Habe eine Tabelle, wo in der F Spalte Datum stehen
Per Userform frage ich zuerst ab, welcher Zeitbereich gesucht werden soll.
(z.B. eine Woche = 7 Tage)
Jetzt soll mir das Makro die Datum von heute bis in 7 Tagen Filtern.
Private Sub CommandButton1_Click()
'Fällige Wartungen Anzeigen
Sheets(„Tabelle2“).Select
vonDatum = Range(„B25“).Value
vonDatum1 = „>=“ & vonDatum
BisDatum = Range(„C25“).Value
BisDatum1 = „>=“ & BisDatum
Sheets(„Wartungsintervalle“).Select
Columns(„F:F“).Select
Selection.AutoFilter
Selection.AutoFilter Field:=1, Criteria1:=vonDatum1, Operator:=xlAnd _
, Criteria2:=BisDatum1
End Sub
Wenn ich es per Hand (Daten -> Filter -> Autofilter…) eingebe, erhalte ich das gewünschte Angezeigt, sobald ich aber dieses Makro ausführe, erhalte ich immer eine leere Seite
Tabelle2 B25 steht das heutige Datum =heute()
Tabelle2 C25 steht das gewünschte Datum =B27+B25
In B27 stehen die ausgewählten Tage (z.B. 7 Tage für eine Woche)
An was liegt das?
Habe die Datei auch Hochgeladen, damit Ihr euch das Problem ansehen könnt.
http://www.hostarea.de/server-06/Juni-45c79efbf1.xls
Ich danke euch
Grüezi Anton
Habe eine Tabelle, wo in der F Spalte Datum stehen
Per Userform frage ich zuerst ab, welcher Zeitbereich gesucht
werden soll.
(z.B. eine Woche = 7 Tage)
Jetzt soll mir das Makro die Datum von heute bis in 7 Tagen
Filtern.
Private Sub CommandButton1_Click()
'Fällige Wartungen Anzeigen
Sheets(„Tabelle2“).Select
vonDatum = Range(„B25“).Value
vonDatum1 = „>=“ & vonDatum
BisDatum = Range(„C25“).Value
BisDatum1 = „>=“ & BisDatum
Sheets(„Wartungsintervalle“).Select
Columns(„F:F“).Select
Selection.AutoFilter
Selection.AutoFilter Field:=1, Criteria1:=vonDatum1,
Operator:=xlAnd _
, Criteria2:=BisDatum1
End Sub
Wenn ich es per Hand (Daten -> Filter -> Autofilter…) eingebe,
erhalte ich das gewünschte Angezeigt, sobald ich aber dieses
Makro ausführe, erhalte ich immer eine leere Seite
An was liegt das?
Der Autofilter arbeitet mit dem formatierten Datum, das in VBA halt in englischem Format daher kommt.
Arbeite daher mit dem zugrunde liegenden Long-Wert des Datums, dann klappt das Filtern auch aus VBA heraus.
Ich habe mir erlaubt, in deiner Prozedur auch die .Selects zu entfernen, dann könnte das Ganze so aussehen:
Private Sub CommandButton1\_Click()
'Fällige Wartungen Anzeigen
Sheets("Wartungsintervalle").Activate
vonDatum1 = "\>=" & CLng(Sheets("Tabelle2").Range("B25").Value)
BisDatum1 = "
Versuche wirklich ohne die ganzen .Selects auzukommen, dann wird deine Anwendung gleich viel ruhiger (und auch schneller) ablaufen und der Code wird um einiges lesbarer.
Mit freundlichen Grüssen
Thomas Ramel
- MVP für MS-Excel -
Hallo Thomas.
Ich danke dir für deinen Code (Ich weiß, die Selects haben sich bei mir leider eingebürgert)
Es funktioniert genau so, wie ich es benötige.
Danke nochmal.
Mfg Anton
Grüezi Anton
Ich danke dir für deinen Code (Ich weiß, die Selects haben
sich bei mir leider eingebürgert)
Es funktioniert genau so, wie ich es benötige.
Fein, ist gern geschehen.
Und zu den .Selects - bürgere sie wieder aus und deine Codes werden noch viel schneller und eleganter werden 
Mit freundlichen Grüssen
Thomas Ramel