Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: VBA Autofilter Criteria2 Array

VBA Autofilter Criteria2 Array
26.08.2020 16:34:06
Alen
Hallo!
Ich habe eine Liste, wo ich in der Spalte F nach dem Datum Filtern kann.
Ich filtere grundsätzlich nur nach Monate.
Wenn ich meine Schritte mit dem Makro aufzeichne erhalte ich folgendes Ergebnis:

ActiveSheet.Range("$C$12:$AE$3000").AutoFilter Field:=6, Operator:= _
xlFilterValues, Criteria2:=Array(0, "5/5/2020")

Danach habe ich mich noch ein bisschen mit dem Makro gespielt und habe folgendes aufgezeichnet:
    ActiveSheet.Range("$C$12:$AE$3000").AutoFilter Field:=6, Operator:= _
xlFilterValues, Criteria2:=Array(1, "5/5/2020", 1, "1/31/2019", 1, "4/30/2019", 1, _
"9/30/2018")

Meine Frage ist nun, warum steht beim Datum "5/5/2020" einmal eine 0 davor und einmal eine 1?
Da ich dies automatisieren möchte, würde mich der Unterschied interessieren, warum einmal eine 0 und einmal eine 1 davor steht.
Danke!
SG
Alen
Anzeige

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

Betreff
Datum
Anwender
Anzeige
AW: VBA Autofilter Criteria2 Array
26.08.2020 16:54:02
Daniel
HI
am besten ist, wenn du versuchst dich zu erinnern, was du beim zweiten filtern anders gemacht hast als beim ersten mal.
die Wahrscheinlichkeit, die 0 und 1 damit zusammenhängt, ist groß.
Gruß Daniel
AW: VBA Autofilter Criteria2 Array
26.08.2020 17:07:21
Daniel
Hi
meinen Tests nach bedeutet an dieser Stelle:
0: filtere nach dem Jahr des Datums
1: filtere nach dem Monat des Datums
2: filtere genau das Datum
3: filtere genaues Datum und Stunde
4. filtere genaues Datum, Stunde und Minute
Gruß Daniel
Anzeige
AW: VBA Autofilter Criteria2 Array
27.08.2020 08:25:02
Alen
Hallo Daniel!
Vielen Dank! Funktioniert so wie du es geschrieben hast.
SG
Alen
Anzeige
Anzeige

Infobox / Tutorial

VBA Autofilter Criteria2 Array nutzen


Schritt-für-Schritt-Anleitung

Um den VBA Autofilter mit dem Criteria2 Array zu verwenden, folge diesen Schritten:

  1. Öffne Excel und die entsprechende Arbeitsmappe.

  2. Aktiviere den VBA-Editor mit ALT + F11.

  3. Füge ein neues Modul hinzu:

    • Rechtsklick auf "VBAProject (DeineDatei.xlsx)" > Einfügen > Modul.
  4. Kopiere und füge den folgenden Code ein:

    Sub FilterMitCriteria2()
       Dim filterArray As Variant
       filterArray = Array(1, "5/5/2020", 1, "1/31/2019", 1, "4/30/2019", 1, "9/30/2018")
       ActiveSheet.Range("$C$12:$AE$3000").AutoFilter Field:=6, Operator:= _
           xlFilterValues, Criteria2:=filterArray
    End Sub
  5. Schließe den VBA-Editor und kehre zu Excel zurück.

  6. Führe das Makro aus: ALT + F8, wähle FilterMitCriteria2 und klicke auf "Ausführen".


Häufige Fehler und Lösungen

  • Fehler: "Laufzeitfehler: 1004"

    • Lösung: Überprüfe, ob der Bereich $C$12:$AE$3000 in deiner Tabelle existiert und ob die Spalte 6 (Spalte F) Daten enthält.
  • Fehler: Filter funktioniert nicht wie erwartet.

    • Lösung: Stelle sicher, dass die Datumsformate in deiner Excel-Tabelle mit dem Format in deinem vba autofilter array übereinstimmen.

Alternative Methoden

Eine alternative Methode, um den Autofilter zu nutzen, ist die Verwendung von xlFilterValues in Kombination mit einem anderen Datentyp, wie z.B. Zahlen oder Text. Hier ist ein Beispiel, wie du mehrere Kriterien in einem Filter kombinieren kannst:

Sub FilterMitAlternativen()
    Dim filterArray As Variant
    filterArray = Array("Kriterium1", "Kriterium2")
    ActiveSheet.Range("$C$12:$AE$3000").AutoFilter Field:=6, Criteria1:=filterArray, Operator:=xlFilterValues
End Sub

Praktische Beispiele

Hier sind einige praktische Anwendungen des VBA Autofilter mit Criteria2:

  1. Filtern nach spezifischen Monaten:

    Sub FilterNachMonat()
       Dim monthArray As Variant
       monthArray = Array(1, "1/1/2022", 1, "2/1/2022")
       ActiveSheet.Range("$C$12:$AE$3000").AutoFilter Field:=6, Operator:=xlFilterValues, Criteria2:=monthArray
    End Sub
  2. Filtern nach einem Jahr:

    Sub FilterNachJahr()
       Dim yearArray As Variant
       yearArray = Array(0, "2022")
       ActiveSheet.Range("$C$12:$AE$3000").AutoFilter Field:=6, Operator:=xlFilterValues, Criteria2:=yearArray
    End Sub

Tipps für Profis

  • Verwende dynamische Arrays: Du kannst die Kriterien dynamisch generieren, basierend auf Benutzerinteraktionen oder anderen Zellen in deinem Arbeitsblatt.

  • Vermeide hartkodierte Werte: Statt fest definierter Werte im Criteria2 Array, ziehe in Betracht, diese aus benutzereingaben oder Zellinhalten zu beziehen.

  • Testen der Filter: Führe vor dem endgültigen Einsatz Deines Codes Tests durch, um sicherzustellen, dass alle Criteria2 Elemente korrekt gefiltert werden.


FAQ: Häufige Fragen

1. Was bedeutet die Zahl vor dem Datum in den Kriterien? Die Zahl gibt an, wie die Filterung erfolgt:

  • 0: Filtere nach dem Jahr
  • 1: Filtere nach dem Monat
  • 2: Filtere nach dem genauen Datum

2. Wie kann ich mehrere Kriterien für den Autofilter festlegen? Du kannst ein Array verwenden, um mehrere Kriterien in einem vba autofilter array zu definieren, wie im Beispielcode gezeigt. Achte darauf, die richtigen Indizes zu verwenden.

3. Funktioniert dies in allen Excel-Versionen? Die Nutzung des VBA Autofilters ist in den meisten modernen Excel-Versionen verfügbar. Stelle sicher, dass du mindestens Excel 2007 oder neuer verwendest.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige