Excel VBA - Filter ein Element abwählen

Allan Sche Sar

Lt. Commander
Registriert
Jan. 2004
Beiträge
1.912
Hallo ihr,

ich sitze gerade dabei mir einen Filter zu bauen. Dieser muss von einem Makro gesteuert werden.
Der Filter selbst soll alle Zeilen mit einem Minus (Zeichen: -) filtern, damit man nur noch die Namen der für die Auswertung benötigten Personen sieht und damit weiter arbeiten kann.

Aber ich bekomme es nur hin, dass ich alle Namen einzeln eintrage und nicht als Kriterium das - abwählen kann.

Wie müsste ich dafür vorgehen?
 
Eben leider nicht. Die Aufzeichnung hat mir alle 25 Kriterien aufgezählt und nicht das eine, welches abgewählt wurde.
 
Macht er eben nicht. Ich habe es nun Mehrfach versucht. Eine Negation wurde nie ausgespuckt.
Also was machst du, damit dir eine Negation ausspuckt wird.

Was bei der Aufzeichnung raus kommt, habe ich dir einmal in der Testdatei abgespeichert (natürlich habe ich den Code nicht geschrieben, sondern aufgezeichnet).
 

Anhänge

Ich gehe auf die Option Textfilter und suche dann nach dem Zeichen, dass (nicht) enthalten sein soll ;)
 

Anhänge

  • Bild 001.jpg
    Bild 001.jpg
    73,4 KB · Aufrufe: 436
mhhh, ich bin still.
Ergänzung ()

Snooty ich greife das ganze noch einmal auf, da sich eine Anschlussfrage ergeben hat.
Ich habe nun eine Funktion mit der ich den gesetzten Filter auslesen kann.

Aber gibt es eine Möglichkeit alle möglichen Filterkriterien ausgeben zu lassen, also auch die, die nicht gesetzt sind?
 
Ja, ich meine alle Optionen (die mit einem Haken versehen werden können), die der Autofilter einem bietet.
Im Makrorekorder habe ich diese aufgezeichnet. Doch das Hilft mir nur für den Moment. Wenn sich morgen ein Kriterium ändert, dann wird dies nicht erfasst.

Mein Wunsch ist es also alle Kriterien beim Ausführen des Makros auszulesen.
 
Nein ich meine den ganz allgemeine Fall.
Kein Filter gesetzt und ich will sehen, welche Filter möglich wären (nur in einer Spalte versteht sich).

Jetzt verstanden, worauf ich hinaus will?
 
Natürlich sind alle Filter möglich, aber wie lese ich diese aus. Also das die Filter mir auf ein separates Tabellenblatt geschrieben werden (zum Beispiel).
 
Natürlich ändert sich etwas an den Filtermöglichkeit, wenn in der entsprechenden Spalte neue Einträge hinzukommen.
Wenn dies zum Beispiel eine Spalte mit Mitarbeiternamen wäre und es kommt ein neuer hinzu, dann ändert sich dies schon.

Solch ein ähnlicher Fall ist es bei mir. Hier ändert sich alle 2-3 Wochen etwas in den Filterkriterien.
 
Da war ich gerade dabei sie zu erstellen.

Die Einträge in Spalte A sollen in einer zweiten Tabelle eingetragen werden. Jedoch nur jeder Eintrag einmal.
Wie du erkennst habe ich als Beispiel nur
Code:
="Name" & AUFRUNDEN(ZUFALLSZAHL();1)

eingefügt. Damit sind die Filterkriterien immer anders, wenn ein Eintrag geschieht. Und somit muss das Makro den Filter doch immer wieder auslesen können.

Jetzt verständlich war ein statischer Eintrag nicht genügt?
 

Anhänge

Du meinst das Filterkriterium ändert sich, weil du in der Liste nach xyz filtern willst, bei einem neuen Eintrag aber meinetwegen nach abc?

Grundsätzliche Frage: willst du Filter (die du zuvor ausgelesen hast) irgendwo erneut per VBA setzen, oder nur auslesen, was gerade gesetzt ist?

Das Setzen passiert ja wie oben schon geschrieben:
Code:
Range("A:A").AutoFilter Field:=1, Criteria1:="=*abc*"

Und hier meinte ich, dass sich das ja nicht ändert - natürlich ändert sich der Suchstring abc, aber nicht der Filter an sich =*...*.

Wenn du das aktuelle Kriterium auslesen willst, geht das mit:
Code:
Worksheets("Tabelle1").AutoFilter.Filters(1).Criteria1

Maximal gibt es 2 Kriterien, das zweite bekäme man entsprechend mit ...Criteria2.
 
Zurück
Oben