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

VBA - Filter und CheckBoxen

Forumthread: VBA - Filter und CheckBoxen

VBA - Filter und CheckBoxen
19.02.2020 12:01:44
Krausert95
Hi Allerseits,
ich bin nicht wirklich erfahren in VBA Programmieren, nur so vorne weg.
Ich habe folgendes Problem bzw. Probleme:
1. Ich habe auf einer Arbeitsmappe eine Liste mit Wörtern und einer dazugehörigen Checkbox. Auf einer anderen Arbeitsmappe habe ich eine Liste, in der in einer Spalte die Wörter als Filter ausgewählt werden können. Ich würde jetzt gerne beim Klick auf einen Button abfragen, welche Checkboxen einen Haken haben und darauf hin den Filter auf der anderen Arbeitsmappe anpassen. Wie mache ich das?
Außer:
ActiveSheet.Range("$B$1:$I$664").AutoFilter Field:=3, Criteria1:=Array( "Wort_1")
habe ich nicht wirklich was gefunden, um Filter anzupassen.
2. Wie kann ich Filter, die schon ausgewählt sind beibehalten und neue Filter dazufügen, ohne die alten zu Überschreiben?
Wenn ich mir "Wort_1", Wort_3" und "Wort_4" gerade anzeigen lasse und "Wort_5" hinzufügen will, muss ich immer wieder die anderen Filter mit in den Befehl setzen. Das muss doch eleganter gehen, als immer wieder alle Filter zu setzen, die ich haben will.
3. Ich habe eine Liste, die aus 100 Zeilen besteht. Ich habe ein paar Filter aktiv und blende dann manuell einige Zeilen aus. Wenn ich aber nun die Filter ändere, werden die von mir manuell ausgeblendeten Zeilen wieder eingeblendet. Kann ich das irgendwie verhindern?
Ich bedanke mich bereits jetzt für eure Lösungsvorschläge.
Anzeige

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA - Filter und CheckBoxen
22.02.2020 10:18:47
Matthias
Moin!
M.E. kann man das alles machen. Kannst es ja mal selbst probieren.
Zu 1.
Da müsste man die Mappe sehen. Hast du zu jedem Wort eine Checkbox oder nur für mehrere? Und wie, was soll übertragen werden? Im Zweifel mit einer Schleife durchgehen.
zu2.
Dazu musst du dir die alten Filter auslesen und dann neu setzen. Dabei musst du aber unterscheiden ob es bis 2 Werte waren oder nur 1 oder 2. Mehr als 2 werdfen als Array in der Filterspalte gespeichert, die anderen als einzelne Kriterien. Daws Auslesen und setzen würde so gehen (Beispiel):
Sub filter_auslesen()
With ActiveSheet.AutoFilter
With .Filters
For spalte = 1 To .Count
With .Item(spalte)
If .On Then
mykrit = .Criteria1
If IsArray(mykrit) Then
Debug.Print Join(mykrit, ",")
Else
Debug.Print mykrit
If .Operator Then
myop = .Operator
Debug.Print myop
mykrit2 = .Criteria2
Debug.Print mykrit2
End If
End If
End If
End With
Next spalte
End With
End With
End Sub
Sub filtern()
ActiveSeheet.Range("A1").AutoFilter Field:=1, Criteria1:=Array("a", "dsds", "h"), Operator:= _
xlFilterValues
End Sub
Die Kriterien sind dann in der Direktansicht. Bei einem Array musst du das = vor jedem Wert noch entfernen. Falls es kein Array ist, machst du eins draus und fügst den Wert an. Wenn nicht, erweitertst du das Array (redim preserve) und fügst deinen Wert an. Dann setzt du den Filter wieder.
zu 3. Da würde ich durch alle Zeilen gehen und schauen, ob sie ausgeblendet seind. Das speicherst du dir. Dann erweiterst du deinen Filter und gehst wieder durch, und blendest die Spalten die wieder sichtbar sind aber eigentlich ausgeblendet gehören aus. Das geht aber nur wenn du den Filte erweiterst. Wenn du ein Kriterium rausnimmst, geht es nicht, da man nicht weiß, ob du es selber ausgeblendet hast. Da wäre es besser, du machst eine zusätzlich Spalte, in der du ein x einträgst, wenn die raus soll. Die kann der Filter ja mit ausblenden.
Falls es nicht geht, bitte eine Beispieldatei posten - Daten aber anonymisieren.
VG
Anzeige
AW: VBA - Filter und CheckBoxen
27.02.2020 07:10:20
Krausert95
Danke schonmal für die Antwort.
1. Ich habe für jedem Wort eine Checkbox (ich habe sie jetzt mal Gegenstände genannt). Auf der zweiten Seite (Mappe) stehen verschiedene Aufgaben, die anhand der verfügbaren Gegenstände ausgewählt werden sollen. Zumindest so das Prinzip.
Userbild
Userbild
2. Den Tipp muss ich erst noch ausprobieren, hatte leider bisher keine Zeit. Grundsätzlich habe ich aber wahrscheinlich beides, 1 oder 2 Kriterien, oder auch bis zu 20 Kriterien. Kann ich mit deinem Beispiel beides abarbeiten?
Anzeige
;
Anzeige
Anzeige

Infobox / Tutorial

Excel Checkboxen für Filter nutzen: So geht's


Schritt-für-Schritt-Anleitung

  1. Checkboxen erstellen: Füge für jedes Wort, das du filtern möchtest, eine Checkbox in Deine Excel-Tabelle ein. Gehe dazu auf die Registerkarte „Entwicklertools“ und wähle „Einfügen“ > „Checkbox“ aus.

  2. VBA-Editor öffnen: Drücke ALT + F11, um den VBA-Editor zu öffnen.

  3. Modul hinzufügen: Klicke mit der rechten Maustaste auf „VBAProject (DeinWorkbookName)“, wähle „Einfügen“ und dann „Modul“.

  4. Code für das Filtern einfügen: Füge den folgenden Code in das Modul ein:

    Sub FilterCheckboxen()
        Dim ws As Worksheet
        Dim filterKriterien As String
        Dim cb As CheckBox
    
        Set ws = ThisWorkbook.Worksheets("DeinTabellenName")
    
        For Each cb In ws.CheckBoxes
            If cb.Value = 1 Then ' Checkbox ist aktiviert
                filterKriterien = filterKriterien & cb.Caption & ","
            End If
        Next cb
    
        If filterKriterien <> "" Then
            filterKriterien = Left(filterKriterien, Len(filterKriterien) - 1) ' Letztes Komma entfernen
            ws.Range("A1").AutoFilter Field:=1, Criteria1:=Split(filterKriterien, ",")
        End If
    End Sub
  5. Button hinzufügen: Füge einen Button in Deine Tabelle ein, um den Filter auszulösen. Verknüpfe diesen Button mit dem Makro FilterCheckboxen.

  6. Testen: Aktiviere einige Checkboxen und klicke auf den Button, um zu sehen, ob die Filter richtig angewendet werden.


Häufige Fehler und Lösungen

  • Fehler: Der Filter funktioniert nicht, obwohl Checkboxen aktiviert sind.
    Lösung: Überprüfe, ob die Checkboxen richtig benannt sind und ob die Feldnummer in AutoFilter korrekt ist.

  • Fehler: Manuell ausgeblendete Zeilen erscheinen wieder.
    Lösung: Speichere den Status der Sichtbarkeit der Zeilen und setze ihn nach dem Filtern zurück.


Alternative Methoden

Du kannst auch die Datenüberprüfung nutzen, um einen Dropdown-Filter zu erstellen. Auf diese Weise kannst du die Auswahl der Filterkriterien vereinfachen und benötigst keine Checkboxen. Dies kann nützlich sein, wenn du mit vielen Kriterien arbeitest.


Praktische Beispiele

  1. Beispiel für Checkboxen: Du hast eine Liste mit Gegenständen und möchtest nur die ausgewählten Gegenstände filtern. Verwende die oben genannten Schritte, um Checkboxen für jeden Gegenstand zu erstellen.

  2. Filter mit mehreren Kriterien: Wenn du mehrere Kriterien hast, die du filtern möchtest, kannst du diese im filterKriterien String kombinieren, wie im obigen Code gezeigt.


Tipps für Profis

  • Dynamische Filter: Überlege, die Checkboxen dynamisch zu gestalten, sodass sie basierend auf den vorherigen Auswahlmöglichkeiten aktualisiert werden.

  • Benutzerdefinierte Formeln: Nutze benutzerdefinierte Excel-Formeln in Kombination mit den Checkboxen, um komplexere Filtermöglichkeiten zu schaffen.


FAQ: Häufige Fragen

1. Kann ich mehrere Checkboxen gleichzeitig filtern?
Ja, der oben angegebene Code filtert alle aktivierten Checkboxen gleichzeitig.

2. Wie kann ich die Filter zurücksetzen?
Füge eine Funktion hinzu, die die AutoFilter-Methode ohne Kriterien aufruft, um alle Filter zu entfernen.

3. Funktioniert das auch in Excel Online?
Leider sind VBA-Makros in Excel Online nicht verfügbar. Du kannst diese Methode nur in der Desktop-Version von Excel verwenden.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige