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

Autofilter mit Checkboxen ansprechen

Forumthread: Autofilter mit Checkboxen ansprechen

Autofilter mit Checkboxen ansprechen
28.11.2012 21:50:33
Diana88
Hallo zusammen,
ich habe ein Problem mit meinen Autofiltern!
Ich habe eine Datentabelle in der ich in Spalte B und C bereits einen Autofilter mit einigen Button (via VBA) anspreche und diesen nach entsprechenden Daten filtere.
Nun habe ich noch in Spalte D einen Autofilter den ich mit Checkboxen ansprechen möchte!
In Spalte D befinden sich z.B. die Werte "A", "B", "C", "D", "E", "F"
Für die Werte "C bis F" habe ich 4 Checkboxen (für jeden Wert eine)
Ich möchte nun, dass der Autofilter für die Spalte D, wenn die entsprechende Checkbox angeklickt ist (Value = TRUE) die Zeilen anzeigt und wenn die Checkboxen nicht angeklickt (Value =FALSE) ausgeblendet werden.
Dabei soll aber nur die bereits vorgefilterte Tabelle (durch die Spalten B und C) betrachtet werden und dementsprechend "weiter" gefiltert werden durch die Checkboxen.
Dies alles ist aus Gründen der Benutzerfreundlichkeit nötig. Denn aus der Tabelle (Tabellenblatt 1) wird ein Diagramm (auf dem Tabellenblatt 2) erstellt, dass abhängig von den Button-Klicks verschiedene Darstellungen erzielt und mit den Checkboxen eben noch bestimmte "Linien" in dem Diagramm anzeigen soll oder nicht.
Es wäre eben nicht benutzerfreundlich, wenn die Mitarbeiter immer erst in die Tabelle gehen müssen und den Autofilter benutzen. Deswegen dachte ich mir die Buttons und die Checkboxen genau neben dem Diagramm zu platzieren um Darstellungen schnellstmöglichst ändern zu können.
Ich komme leider nicht auf einen Ansatz Sad
Vielen Dank schon im Voraus für Rückmeldungen!
Gruß Diana

Anzeige

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Autofilter mit Checkboxen ansprechen
28.11.2012 22:42:08
fcs
Hallo Diana,
hier ein Beispel, wie du den Autofilter an die Auswahl der Checkboxen koppeln kannst.
In der Summe wird es aber etwas einfacher, wenn du eine Listbox verwendest, statt mehrerer Checkboxen.
Außerdem hat die Listbox das vom Autofilter her gewohnte Aussehen.
Gruß
Franz
'Autofilter setzen über 4 Checlboxen
Private Sub CheckBox1_Click()
Call FilterSpalteD
End Sub
Private Sub CheckBox2_Click()
Call FilterSpalteD
End Sub
Private Sub CheckBox3_Click()
Call FilterSpalteD
End Sub
Private Sub CheckBox4_Click()
Call FilterSpalteD
End Sub
Private Sub FilterSpalteD()
Dim arrFilter(), intI As Integer
Dim wks As Worksheet
If Me.CheckBox1 = True Then
intI = intI + 1
ReDim Preserve arrFilter(1 To intI)
arrFilter(intI) = "C"
End If
If Me.CheckBox2 = True Then
intI = intI + 1
ReDim Preserve arrFilter(1 To intI)
arrFilter(intI) = "D"
End If
If Me.CheckBox3 = True Then
intI = intI + 1
ReDim Preserve arrFilter(1 To intI)
arrFilter(intI) = "E"
End If
If Me.CheckBox4 = True Then
intI = intI + 1
ReDim Preserve arrFilter(1 To intI)
arrFilter(intI) = "F"
End If
Set wks = Worksheets("Tabelle1")
With wks
If .AutoFilterMode = True Then
If intI > 0 Then
.AutoFilter.Range.AutoFilter Field:=4, Criteria1:=arrFilter, Operator:=xlFilterValues
Else
.AutoFilter.Range.AutoFilter Field:=4 ', Criteria1:=arrFilter, Operator:=xlFilterValues
End If
End If
End With
End Sub
' Autofilter setzen über Listbox mit Eigenschaften Multiselect = 1 und ListStyle =1
Private Sub ListBox1_Change()
Dim wks As Worksheet
Dim arrFilter(), intI As Integer, intCount As Integer
With Me.ListBox1
For intCount = 0 To .ListCount - 1
If .Selected(intCount) = True Then
intI = intI + 1
ReDim Preserve arrFilter(1 To intI)
arrFilter(intI) = .List(intCount, 0)
End If
Next
End With
Set wks = Worksheets("Tabelle1")
With wks
If .AutoFilterMode = True Then
If intI > 0 Then
.AutoFilter.Range.AutoFilter Field:=4, Criteria1:=arrFilter, Operator:=xlFilterValues
Else
.AutoFilter.Range.AutoFilter Field:=4 ', Criteria1:=arrFilter, Operator:=xlFilterValues
End If
End If
End With
End Sub
Private Sub UserForm_Initialize()
With Me.ListBox1
.AddItem "C"
.AddItem "D"
.AddItem "E"
.AddItem "F"
End With
End Sub

Anzeige
AW: Autofilter mit Checkboxen ansprechen
29.11.2012 19:19:59
Diana88
Hallo Franz,
zunächst einmal vielen DANK für deine schnelle Rückmeldung! Wirklich klasse!!!
Also das mit der Listbox ist nicht so gut, da ich da ja dann immer nur einen Wert auswählen kann. Ich will aber das ich mit dem setzen der Checkboxen die verschiedenen Linien im Diagramm darstellen kann. Also wenn:
Checkbox1 = True --> zeige "C"
Checkbox2 = True --> zeige "D"
Checkbox3 = True --> zeige "E"
Checkbox4 = True --> zeige "F"
Checkbox1 = False --> verberge "C"
Checkbox2 = False --> verberge "D"
Checkbox3 = False --> verberge "E"
Checkbox4 = False --> verberge "F"
Also es können zig Möglichkeiten entstehen. Z.B. nur eine der genannten Zeigen, oder 2, oder 3 oder alle.
Der Code funktioniert soweit auch :).. Also die Linien werden angezeigt. ABER! Die anderen Filterkriterien werden ausgeblendet. Diese stellen Balken im Diagramm dar!
Ich möchte aber das die anderen Kriterien auch angezeigt werden wenn ich eine Checkbox anklicke. Also die Balken sichtbar bleiben!
Ich habe es so versucht mit dem Opterator xland aber es funktioniert nicht...

Set wks = Worksheets("Tabelle1")
With wks
If .AutoFilterMode = True Then
If intI > 0 Then
.AutoFilter.Range.AutoFilter Field:=4, Criteria1:=arrFilter, Operator:=xlAnd, Criteria2: _
=Array("A", "B"), Operator:=xlFilterValues
Else
.AutoFilter.Range.AutoFilter Field:=4 ', Criteria1:=arrFilter, Operator:=xlAnd,  _
Criteria2:=Array("A", "B"), Operator:=xlFilterValues
End If
End If
End With
End Sub

Hoffe du kannst mir nochmal helfen.
Vielen DANK schon im Voraus!!!
Grüße
Diana

Anzeige
AW: Autofilter mit Checkboxen ansprechen
01.12.2012 10:58:57
fcs
Hallo Diana,
ich denke hier gibt es noch eine Verständnisfrage.
Willst du mit den Checkboxen Werte eines Filters für eine bestimmte Spalte setzen?
oder
Sollen mit den Checkboxen Spalten ein- bzw. ausgeblendet werden?
oder
Sollen im Diagramm bestimmte Datenreihen ein-/ausgeblendet werden?
Letzteres scheint der Fall zu sein.
Listboxen kann man auch so einstellen, dass mehrere Einträge ausgewählt werden können.
Hierzu kann man im VBA-Editor die Eigenschaft "MultiSelect" der Listbox anpassen.
Damit wir hier weiterkommen wäre es hilfreich, wenn du eine Datei mit ein paar -ggf. anonymisierten-Beispieldaten hier hochlädst. Inklusive Erläuterung, was es mit den Daten in Spalte D auf sich hat und was im Diagramm nach einer AUswahl passieren soll.
Gruß
Franz

Anzeige
AW: Autofilter mit Checkboxen ansprechen
01.12.2012 17:18:58
Steffi
Hallo Franz,
sorry für die späte Rückmeldung.
Habe die Datei jetzt mal etwas anonymisiert und lade sie hier hoch:
https://www.herber.de/bbs/user/82845.xlsm
Es ist so ich habe eine Datentabelle ("MA-Daten") in die kopiere ich Daten hoch.
In dem Blatt "MA-Daten_Diagram" erscheint ein Diagramm. Dieses ist verknüpft mit den Daten aus Blatt "MA-Daten". Mit den Buttons Jahre kann ich die Jahre ein- bzw. ausblenden die ich haben möchte.
Mit den Buttons "MA1" "MA2" "MA3" "MA4" "MA5" "Total" kann ich die Daten der einzelnen MA anzeigen lassen (als Balken).
NUN das Problem:
Mit den Checkboxen "D" "E" "F" "G" möchte ich Linien anzeigen lassen (ZUSÄTZLICH zu den ausgewählen Balken).
Also wähle ich z.B. "D" und "G" sollen diese zwei Linien erscheinen. Wähle ich "D" wieder ab soll nur noch "G" sichtbar sein.
D.h. die von mir nun eingebaute Prozedur "FilterSpalteC" soll bei anklicken der jeweiligen Checkbox die Spalte "C" im Blatt "MA-Daten" filtern UND die Balken die mit dem Button angewählt wurden ("MA1" "MA2" "MA3" "MA4" "MA5" "Total")
P.S. es handelt sich um die Spalte C die selektiert werden muss nicht wie von mir fälschlicherweise angenommene D!
Hoffe dies ist hilfreich und Du kannst mir weiterhelfen!
Ich danke Dir schon mal im Voraus!!!
Grüßle
Diana

Anzeige
AW: Autofilter mit Checkboxen ansprechen
01.12.2012 17:25:49
Steffi
Achso:
Die Daten in Spalte C "A", "B", "C", "H" (das sind alle außer den mit den Checkboxen auszuwählenden) sollen immer angezeigt werden. D.h. die haken in der Filterauswahl können da immer als gesetzt markiert sein. Und die anderen 4 Daten "D" "E" "F" "G" möchte ich eben mit den Checkboxen steuern...
Also ich möchte eig. mit den Checkboxen die Werte des Filters setzen.
Hoffe es hilft weiter
DANKESCHÖN.
Grüßle
Steffi

Anzeige
AW: Autofilter mit Checkboxen ansprechen
01.12.2012 20:32:00
fcs
Hallo Steffi-Diana,
für den Einsatz des Autofilters in Spalte C gibt es jetzt 2 Baustellen, die irgendwie bereinigt werden müssen:
1. verbundene Zellen
Die Parameter A, B und D bis H sind jeweils in verbundene Zellen eingetragen. So funktioniert der Autofilter hier nur für den Mitarbeiter MA1. Bei allen anderen Mitarbeitern ist die Spalte C leer, so dass keine Daten angezeigt werden, wenn der Filter auf einen der Werte gesetzt wird.
Die einfachste Lösung: Die verbundenen Zellen auflösen und den Parameter in Spalte C in jeder Zeile eintragen. Dies müßte man einmal per Hand machen oder nach jedem Kopieren der Daten per Makro erledigen.
Dann kann man den Autofilter auch einsetzen.
Ist es ein Problem, die verbundenen Zellen in Spalte C aufzulösen? Außer das es optisch evtl. nicht so "schön" aussieht wie mit verbundenen Zellen? Zur Not könnte man natürlich links von Spalte C auch eine weitere Hilfsspalte einfügen, in der in jeder Zeile der Parameter steht. Damm müßten aber viele Zeilen in den Makros angepasst werden.
Die Prameter "A", "B", "C", "H" im Autofilter für Spalte C fix zusetzen und die Parameter "D" bis "G" variabel ist dann kein so großes Problem bei der Programmierung.
2. Parameter C / Mitarbeiter abc
Wenn ich dich dich richtig verstanden habe, dann sollen die Daten dieser Zeile für jeden Mitarbeiter immer im Diagramm angezeigt werden.
Im Code für die einzelnen MA-Buttons wird für Spalte "Mitarbeiter" immer der Filter auf den MA oder "C" gesetzt.
Steht in der Zeile mit Parameter "C" in Spalte Mitarbeiter in der Datei mit den echten Daten immer "C" und nicht "abc" ?
Grüßle
Franz

Anzeige
AW: Autofilter mit Checkboxen ansprechen
01.12.2012 22:06:13
fcs
Hallo Steffi,
ich hab die verbundenen Zellen in Spalte C im Blatt MA-Daten mal aufgelöst und das Makro "FilterSpalteC" angepasst.
Die anderen Makros hab ich optimiert/vereinfacht.
Gruß
Franz
https://www.herber.de/bbs/user/82850.xlsm

Anzeige
AW: Autofilter mit Checkboxen ansprechen
03.12.2012 19:37:09
Steffi
WOOOOW,
vielen DANK Franz!!!
Jetzt klappt alles wunderbar :).
DANKESCHÖN das du dir soviel Mühe gegeben und Zeit genommen hast. Echt klasse!!!
Lieben Gruß
Steffi
;
Anzeige
Anzeige

Infobox / Tutorial

Autofilter mit Checkboxen in Excel nutzen


Schritt-für-Schritt-Anleitung

  1. VBA-Editor öffnen: Drücke ALT + F11, um den VBA-Editor zu öffnen.
  2. UserForm erstellen: Füge eine UserForm hinzu und platziere Vier Checkboxen für die Werte "C", "D", "E" und "F".
  3. VBA-Code einfügen: Kopiere den folgenden Code in die UserForm:
Private Sub CheckBox1_Click()
    Call FilterSpalteD
End Sub

Private Sub CheckBox2_Click()
    Call FilterSpalteD
End Sub

Private Sub CheckBox3_Click()
    Call FilterSpalteD
End Sub

Private Sub CheckBox4_Click()
    Call FilterSpalteD
End Sub

Private Sub FilterSpalteD()
    Dim arrFilter(), intI As Integer
    Dim wks As Worksheet
    If Me.CheckBox1.Value = True Then
        intI = intI + 1
        ReDim Preserve arrFilter(1 To intI)
        arrFilter(intI) = "C"
    End If
    If Me.CheckBox2.Value = True Then
        intI = intI + 1
        ReDim Preserve arrFilter(1 To intI)
        arrFilter(intI) = "D"
    End If
    If Me.CheckBox3.Value = True Then
        intI = intI + 1
        ReDim Preserve arrFilter(1 To intI)
        arrFilter(intI) = "E"
    End If
    If Me.CheckBox4.Value = True Then
        intI = intI + 1
        ReDim Preserve arrFilter(1 To intI)
        arrFilter(intI) = "F"
    End If

    Set wks = Worksheets("Tabelle1")
    With wks
        If .AutoFilterMode = True Then
            If intI > 0 Then
                .AutoFilter.Range.AutoFilter Field:=4, Criteria1:=arrFilter, Operator:=xlFilterValues
            Else
                .AutoFilter.Range.AutoFilter Field:=4
            End If
        End If
    End With
End Sub
  1. Diagramm anpassen: Stelle sicher, dass das Diagramm in einem anderen Tabellenblatt die gefilterten Daten entsprechend darstellt.

Häufige Fehler und Lösungen

  • Fehler: Die Checkboxen filtern nicht die gewünschten Daten.

    • Lösung: Überprüfe, ob die Werte in Spalte D tatsächlich "C", "D", "E" und "F" sind. Achte darauf, dass keine Leerzeichen vorhanden sind.
  • Fehler: Diagramm zeigt nicht die erwarteten Linien.

    • Lösung: Stelle sicher, dass der Autofilter korrekt gesetzt ist und die Daten im Diagramm mit den gefilterten Daten verknüpft sind.

Alternative Methoden

Anstelle von Checkboxen kannst du auch eine Listbox verwenden. Diese ermöglicht es, mehrere Werte gleichzeitig auszuwählen. Der VBA-Code würde sich entsprechend anpassen, um die ausgewählten Werte aus der Listbox zu filtern.

Private Sub ListBox1_Change()
    Dim arrFilter(), intI As Integer
    Dim wks As Worksheet
    For intCount = 0 To Me.ListBox1.ListCount - 1
        If Me.ListBox1.Selected(intCount) = True Then
            intI = intI + 1
            ReDim Preserve arrFilter(1 To intI)
            arrFilter(intI) = Me.ListBox1.List(intCount)
        End If
    Next
    ' Rest des Codes bleibt gleich wie oben
End Sub

Praktische Beispiele

  1. Beispiel für Checkboxen: Wenn du die Checkbox für "C" aktivierst, werden nur die Zeilen angezeigt, die "C" in Spalte D enthalten. Wenn du mehrere Checkboxen aktivierst, werden die entsprechenden Linien im Diagramm angezeigt.

  2. Diagramm-Filter: Stelle sicher, dass die Checkboxen mit dem Diagramm verknüpft sind, um die Sichtbarkeit der Linien in Echtzeit zu ändern.


Tipps für Profis

  • Verwende benutzerdefinierte Filter: Du kannst die Filterkriterien noch weiter anpassen, um komplexere Bedingungen zu erstellen.
  • Benutzerfreundlichkeit erhöhen: Platziere die Checkboxen und Diagramme nebeneinander, um die Benutzerfreundlichkeit zu verbessern und ein schnelles Filtern zu ermöglichen.
  • VBA-Makros optimieren: Überlege, wie du deinen Code effizienter gestalten kannst, um die Leistung zu steigern.

FAQ: Häufige Fragen

1. Wie kann ich mehrere Checkboxen gleichzeitig verwenden?
Du kannst mehrere Checkboxen aktivieren, und der Autofilter wird entsprechend alle aktiven Filterkriterien anwenden.

2. Funktioniert das auch in älteren Excel-Versionen?
Ja, die beschriebenen Methoden sollten in den meisten aktuellen Excel-Versionen funktionieren, auch in älteren, solange VBA unterstützt wird.

3. Wie gehe ich mit verbundenen Zellen um?
Verbundene Zellen sollten aufgelöst werden, um sicherzustellen, dass der Autofilter korrekt funktioniert. Andernfalls kann der Autofilter die Daten nicht richtig erkennen.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige