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

Forumthread: Autofilter über VBA mit variablen Kriterium

Autofilter über VBA mit variablen Kriterium
08.02.2017 20:15:12
mail@kopperth.de
Hallo zusammen,
ich möchte gerne in VBA einen Autofilter erstellen, bei welchem ich im Criteria1 eine Variable übergeben könnte.
so funktioniert es:
Sheets(TabellenblattQuelle).Range("$B$1:$L$1").AutoFilter Field:=11, Criteria1:=Array("verschrottet 2013", "verschrottet 2014"), Operator:=xlFilterValues
die Auswahl der Jahre soll aber variabel sein und ich habe das dann so versucht,
das funktioniert aber nicht, es werden keine Daten gefiltert...
Sheets(TabellenblattQuelle).Range("$B$1:$L$1").AutoFilter Field:=11, Criteria1:=Array(Kriterium), Operator:=xlFilterValues
Hinter der Variable Kriterium verbirgt sich der Text:
"verschrottet 2013", "verschrottet 2014", "verschrottet 2015"
zumindestens wird mir das mit debug.print im Direktfesnter angezeigt, die Variable Kriterium ist als Variant deklariert.
Hätte hier jemnad eine Idee?
Vielen Dank schon mal für Eure Unterstützung!
Anzeige

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Autofilter über VBA mit variablen Kriterium
08.02.2017 20:47:02
Luschi
Hallo mail@kopperth.de
so klappt das bei mir:
Criteria1:=Split(Kriterium, ",", -1, vbTextCompare)
Gruß von Luschi
aus klein-Paris
AW: Autofilter über VBA mit variablen Kriterium
08.02.2017 20:54:36
mail@kopperth.de
Ja das klappt so! Da wäre vermutlich nie draufgekommen...
Also nochmals vielen herzlichen Dank und SG!!!
AW: Autofilter über VBA mit variablen Kriterium
08.02.2017 21:06:11
fcs
Hallöchen,
wenn die Filterwerte als Liste (getrennt durch eine Trennzeichen) in der Variablen vorliegen, dann kann man mit der Funktion Split ein Array mit den Filterwerten als Kriterium im Autofilter generieren.
Sind die Filterwerte jeweils in Anführungszeichen gesetzt, dann müssen diese vor dem Splitten durch leerstrings ersetzt werden.
LG
Franz
Sub aatest()
'1. funktioniere Form für Kriterium mit Trennzeichen Komma
Kriterium = "verschrottet 2013,verschrottet 2014,verschrottet 2015"
'2. Filter-Werte stehen in der Form "verschrottet 2013", "verschrottet 2014", "verschrottet  _
2015" _
in der Variablen
'Beispielzeile, um Kriterium entsprechend zusammenzubasteln
Kriterium = """verschrottet 2013"", ""verschrottet 2014"", ""verschrottet 2015"""
'Anführungszeichen durch Leerstring ersetzen
Kriterium = Replace(Kriterium, """", "")
TabellenblattQuelle = "Tabelle2" 'testzeile
Sheets(TabellenblattQuelle).Range("$B$1:$L$1").AutoFilter Field:=11, _
Criteria1:=Split(Kriterium, ","), Operator:=xlFilterValues
End Sub

Anzeige
AW: Autofilter über VBA mit variablen Kriterium
08.02.2017 21:47:16
mail@kopperth.de
Servus Franz,
vielen herzlichen Dank für deine Unterstützung, der Filter läuft jetzt optimal!
Danke und SG Holger
Anzeige
Anzeige

Infobox / Tutorial

Autofilter in VBA mit variablen Kriterien nutzen


Schritt-für-Schritt-Anleitung

Um in Excel VBA einen Autofilter mit variablen Kriterien zu erstellen, kannst du folgende Schritte befolgen:

  1. Deklariere die Variablen: Stelle sicher, dass du eine Variable für die Filterkriterien hast. Diese sollte als Variant deklariert werden, um mehrere Werte aufnehmen zu können.

    Dim Kriterium As Variant
  2. Setze die Filterkriterien: Weise der Variable Kriterium die gewünschten Werte zu, getrennt durch ein Komma.

    Kriterium = "verschrottet 2013,verschrottet 2014,verschrottet 2015"
  3. Ersetze Anführungszeichen: Falls die Filterwerte in Anführungszeichen gesetzt sind, entferne diese mit der Replace-Funktion.

    Kriterium = Replace(Kriterium, """", "")
  4. Wende den Autofilter an: Nutze die AutoFilter-Methode und übergebe die Kriterien als Array.

    Sheets("Tabelle2").Range("$B$1:$L$1").AutoFilter Field:=11, _
    Criteria1:=Split(Kriterium, ","), Operator:=xlFilterValues

Häufige Fehler und Lösungen

  • Fehler: Keine Daten werden gefiltert
    Wenn keine Daten gefiltert werden, überprüfe, ob die Kriterien korrekt gesetzt sind. Verwende Debug.Print, um die Inhalte der Variablen zu überprüfen.

  • Lösung: Verwendung von Split
    Stelle sicher, dass du die Split-Funktion korrekt anwendest, um ein Array aus den Kriterien zu generieren. Beispiel:

    Criteria1:=Split(Kriterium, ",", -1, vbTextCompare)
  • Fehler: Falsches Feld angegeben
    Achte darauf, dass das Field-Argument die korrekte Spalte referenziert, in der gefiltert werden soll.


Alternative Methoden

Wenn die direkte Verwendung von AutoFilter nicht den gewünschten Effekt hat, kannst du alternative Methoden in Betracht ziehen:

  • Advanced Filter: Nutze den AdvancedFilter, um komplexere Filteroperationen durchzuführen.
  • Formeln: Erstelle Hilfsspalten mit Formeln zur Filterung und verwende die Autofilter-Funktion auf Basis dieser Spalten.

Praktische Beispiele

Hier ist ein einfaches VBA-Skript, das die oben genannten Schritte zusammenfasst:

Sub FilterBeispiel()
    Dim Kriterium As Variant
    Kriterium = "verschrottet 2013,verschrottet 2014,verschrottet 2015"
    Kriterium = Replace(Kriterium, """", "")

    Sheets("Tabelle2").Range("$B$1:$L$1").AutoFilter Field:=11, _
    Criteria1:=Split(Kriterium, ","), Operator:=xlFilterValues
End Sub

Dieses Skript filtert die Daten in der Tabelle2 basierend auf den variablen Kriterien.


Tipps für Profis

  • Nutze Option Explicit am Anfang deiner Module, um sicherzustellen, dass alle Variablen deklariert sind.
  • Verwende Error Handling, um potenzielle Laufzeitfehler abzufangen.
  • Experimentiere mit unterschiedlichen Operator-Werten, um verschiedene Filtermethoden auszuprobieren.

FAQ: Häufige Fragen

1. Wie kann ich mehrere Filterkriterien kombinieren?
Du kannst weitere Filterkriterien hinzufügen, indem du zusätzliche Criteria-Argumente in der AutoFilter-Methode angibst.

2. Funktioniert dieser Code in allen Excel-Versionen?
Ja, die beschriebenen Methoden und Funktionen sind in den meisten modernen Excel-Versionen verfügbar.

3. Was ist der Unterschied zwischen AutoFilter und AdvancedFilter?
AutoFilter ist für einfaches Filtern gedacht, während AdvancedFilter mehr Flexibilität und komplexere Filtermöglichkeiten bietet.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige