Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

VBA - Autofilter, "<Datum"

Forumthread: VBA - Autofilter, "<Datum"

VBA - Autofilter, "<Datum"
Marc
Guten Morgen!
Ich versuche eine Auftragsliste nach verschiedenen in einer Tabelle dargestellten Sachverhalten zu filtern.
Dies geschieht mit folgendem Makro
Sub Auftragsfilter()
Dim krit As String
Selection.AutoFilter Field:=8, Criteria1:="FREI"
Selection.AutoFilter Field:=14, Criteria1:=Cells(ActiveCell.Row, "A")
krit = "
Die ersten beiden Kriterien funktioniern
In Feld 10 wird nach Datum selektiert, nämlich älter als (Spalte, Zeile 3; bzw 04.01.2012)
Der Filter wird in allen Feldern als aktiv dargestellt, jedoch ohne das Datum korrekt zu filtern: Es wird kein Eintrag wiedergegeben. Geh ich in die Kriterien (benutzerdefiniert) , wird alles korrekt dargestellt. Bestätige ich mit OK (ohne Änderung!!!) wird der Filter korrekt angewandt.
Wie aktiviere ich den Filter sofort korrekt?
Danke schonmal für mitdenken....
Gruß, Marc
Anzeige

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
gelöst: VBA - Autofilter, "<Datum"
04.01.2012 09:17:11
Marc
Das Problem ist, das der wirkliche Datumwert ("04.01.2012") als vergleichernder Operand verwandt wird.
Wenn vorher der Wert in den MS-Datumswert gewandelt wird (durch *1) funktioniert alles.
Trotzdem Danke...
Gruß, Marc
AW: VBA - Autofilter, "<Datum"
04.01.2012 10:54:05
Markus
Hi Marc,
Datumsangaben klappen beim Autofilter nach meinen Erfahrungen so
Selection.AutoFilter Field:=10, Criteria1:=clng(krit)
Grüße
Markus
Anzeige
Danke schön.
05.01.2012 07:46:24
Marc
Guten Morgen!
Funktionier super, werd ich gleich einbauen.
Danke schön.
Gruß, Marc
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Autofilter in VBA für Datumsfilter richtig anwenden


Schritt-für-Schritt-Anleitung

Um einen Autofilter in VBA korrekt zu verwenden, insbesondere für Datumswerte, gehe wie folgt vor:

  1. Vorbereitung: Stelle sicher, dass deine Daten in einer Excel-Tabelle korrekt formatiert sind. Achte darauf, dass die Datumswerte als solche erkannt werden.

  2. Makro erstellen: Öffne den VBA-Editor (Alt + F11) und erstelle ein neues Modul.

  3. Code eingeben: Verwende den folgenden Code, um die Liste zu filtern:

    Sub Auftragsfilter()
        Dim krit As String
        krit = "04.01.2012" ' Beispiel-Datum
        Selection.AutoFilter Field:=8, Criteria1:="FREI"
        Selection.AutoFilter Field:=14, Criteria1:=Cells(ActiveCell.Row, "A")
        Selection.AutoFilter Field:=10, Criteria1:=CDate(krit) ' Sicherstellen, dass das Datum korrekt interpretiert wird
    End Sub
  4. Filter anwenden: Führe das Makro aus. Überprüfe, ob die Daten wie gewünscht gefiltert werden.


Häufige Fehler und Lösungen

  • Problem mit Datumsformat: Wenn der Filter nicht wie erwartet funktioniert, könnte es daran liegen, dass das Datum nicht im richtigen Format vorliegt. Verwende CDate(), um sicherzustellen, dass das Datum richtig erkannt wird.

  • Filter zeigt keine Ergebnisse: Überprüfe, ob die Autofilteroptionen aktiv sind. Nutze ActiveSheet.AutoFilterMode = False, um alle Filter zu deaktivieren, bevor du neue anwendest.

  • Kein Eintrag wird angezeigt: Wenn die Filterkriterien nicht passen, überprüfe die Daten in der betreffenden Spalte. Manchmal reicht es aus, die Filterkriterien manuell zu bestätigen, um sie korrekt anzuwenden.


Alternative Methoden

Eine alternative Methode, um Datumswerte zu filtern, ist die Verwendung des AutoFilterMode:

Sub AuftragsfilterAlt()
    If ActiveSheet.AutoFilterMode Then
        ActiveSheet.AutoFilterMode = False
    End If

    ' Filter anwenden
    ActiveSheet.Range("A1").AutoFilter Field:=10, Criteria1:="<04.01.2012"
End Sub

Diese Methode setzt den Autofilter zurück, bevor neue Filter angewendet werden.


Praktische Beispiele

Beispiel 1: Filter für Datumswerte

Sub FilterNachDatum()
    Dim datum As Date
    datum = DateValue("04.01.2012")
    Selection.AutoFilter Field:=10, Criteria1:="<" & datum
End Sub

Beispiel 2: Kombinierter Filter

Hier filterst du nach mehreren Kriterien:

Sub KombinierterFilter()
    Dim datum As Date
    datum = DateValue("04.01.2012")
    Selection.AutoFilter Field:=8, Criteria1:="FREI"
    Selection.AutoFilter Field:=10, Criteria1:="<" & datum
End Sub

Tipps für Profis

  • Nutze Criteria1:=CStr(datum) in Kombination mit CDate(), um sicherzustellen, dass der Filter auch bei unterschiedlichen Datumsformaten funktioniert.
  • Halte die Variablen klar und deutlich benannt, um die Übersichtlichkeit deines Codes zu verbessern.
  • Teste deinen Code in einer sicheren Umgebung, um mögliche Fehler frühzeitig zu identifizieren.

FAQ: Häufige Fragen

1. Wie filtere ich nach mehreren Datumswerten?
Du kannst mehrere Kriterien mit Criteria1 und Criteria2 festlegen, indem du sie in einem Array speicherst.

2. Was mache ich, wenn meine Daten nicht gefiltert werden?
Überprüfe das Datumsformat und stelle sicher, dass dein Autofilter aktiv ist. Du kannst auch die Funktion AutoFilterMode verwenden, um alle Filter zurückzusetzen.

3. Wie kann ich den Autofilter wieder entfernen?
Verwende ActiveSheet.AutoFilterMode = False, um den Filter zu deaktivieren.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige