Probleme mit 'Filter' übers Makro

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 :smile:

Mit freundlichen Grüssen

Thomas Ramel

  • MVP für MS-Excel -