Frage von xXSnip3rXx, 134

Wie kann ich in VBA-Excel einen Filter setzen über einer CheckBox?

Hi,

ich suche eine einfachere Lösung für meine UserForm um über CheckBoxen meine Tabelle zu Filtern.

Im grunde möchte ich also, wenn ich einen Wert ankreuze soll dieser Gefiltert werden.

Wie im Beispiel (unten):

FKEP und KKEP angekreuzt = FKEP und KKEP angezeigt.

Nur KKEP angekreuzt = nur KKEP angezeigt

"Wert" der gefiltert werden soll | CheckBox Name
 FKEP                              CBFilterFKEP
 KKEP                              CBFilterKKEP
 KfB                               CBFilterKfB
 ausgesch.                         CBFilterausgesch
 beendet                           CBFilterbeendet
 EQ - KfB                          CBFilterEQKfB
 EQ - FKEP                         CBFilterEQFKEP

Mein momentaner Code schaut wiefolgt aus:

    Private Sub CBFilterFKEP_Click()

If CBFilterFKEP = True Then

    Sheets("Gesamtdaten").Range("$A$2:$EQ$502").AutoFilter Field:=3, Criteria1:=Array( _
    "FKEP"), Operator:=xlFilterValues

If CBFilterKKEP = True Then

    Sheets("Gesamtdaten").Range("$A$2:$EQ$502").AutoFilter Field:=3, Criteria1:=Array( _
    "FKEP", "KKEP"), Operator:=xlFilterValues

End If
End If
End Sub

Private Sub CBFilterKKEP_Click()

    If CBFilterKKEP = True Then

        Sheets("Gesamtdaten").Range("$A$2:$EQ$502").AutoFilter Field:=3, Criteria1:=Array( _
        "KKEP"), Operator:=xlFilterValues

    If CBFilterFKEP = True Then

        Sheets("Gesamtdaten").Range("$A$2:$EQ$502").AutoFilter Field:=3, Criteria1:=Array( _
        "KKEP", "FKEP"), Operator:=xlFilterValues

    End If
    End If
    End Sub

Soweit so gut ... nun habe ich aber nur FKEP und KKEP "abgestimmt" ... muss ich nun alle 5 Werte auch "abstimmen" ? Das wird nämlich ein SEHR langer code ... und ich könnte wetten das es in VBA viel leichter geht ...

Hat wer eine Idee von euch?

MfG Tim

Hilfreichste Antwort - ausgezeichnet vom Fragesteller
von Ninombre, Community-Experte für Excel, 100

das Beispiel nur mal die 3 Filtern, das kannst Du aber erweitern. Der Code kann dann unverändert bei jedem CheckBox-Click eingetragen werden

Private Sub CheckBox2_Click()
If CBFilterKKEP = True Then suchtext1 = "KKEP"
If CBFilterFKEP = True Then suchtext2 = "FKEP"
If CBFilterKfB = True Then suchtext3 = "KfB"
Sheets("Gesamtdaten").Range("$A$2:$EQ$502").AutoFilter Field:=3, Criteria1:=Array( _
suchtext1, suchtext2, suchtext3), Operator:=xlFilterValues
End Sub

Eigentlich hätte ich die Suchtexte gerne in einer einzigen Variable gepackt. Ich weiß allerdings nicht, wie man die Verkettung mit den "" in dieser Form abbilden kann. Vielleicht hat jemand anders hier eine Lösung parat.

Kommentar von xXSnip3rXx ,

Perfekt :) Vielen Dank!

Funktioniert genau wie ich es haben wollte ;)

Kannte "suchtext" garnicht .. cool wieder was gelernt ;'D

MfG Tim

Kommentar von Ninombre ,

suchtext ist hier einfach nur eine Variable, kannst auch einen anderen Namen verwenden.

Antwort
von xXSnip3rXx, 71

Ninombre =  Hilfreichste Antwort ;)

Keine passende Antwort gefunden?

Fragen Sie die Community