Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Ein-/ausblenden von Tabellenzeilen per CheckBox

Forumthread: Ein-/ausblenden von Tabellenzeilen per CheckBox

Ein-/ausblenden von Tabellenzeilen per CheckBox
14.07.2015 10:14:34
Tabellenzeilen
Hallo zusammen!
Nachdem mir beim letzten mal schon so hervorragend geholfen wurde, komme ich mit einer neuen Frage zu euch. Ich habe eine Tabelle, welche sich vereinfacht wie folgt darstellen lässt:
KontenbezeichnungSoll 2015Ist 2015Abweichung [€]Soll 2014Ist 2014Abweichung [€]
Instandhaltung10000100000850085000
Hilfs- und Betriebsstoffe1200014000-200012000100002000
Versand1000022000-1200010000100000
Einkauf4600050000-400046000400006000
Fertigung6500075000-1000065000600005000

Nun ist der Wunsch meines Praktikumsbetreuers, dass mithilfe von Kontrollkästchen sich mehrere "Funktionen" an- und abwählen lassen. Zwei Beispiele:
  • Das Ausblenden Reihen mit Abweichungen 2015 von weniger als 5000€ (Positiv und Negativ)

  • Das Ausblenden von Reihen mit Ist2015 - Ist2014 kleiner als 10 Prozent (Positiv und negativ)

  • Wichtig ist, dass mehrere Checkboxen angewählt werden können ohne die Funktion der anderen zurückzusetzen. Für die beiden Beispiele mal meine rudimentären Versuche:
    Private Sub CheckBox1_Click()
    If CheckBox1.Value = True Then
    Set CellRange = Range("I5:I188")
    For Each Cell In CellRange
    If Cell.EntireRow.Hidden = False Then
    Cell.EntireRow.Hidden = (Cell.Value = -5000)
    End If
    Next
    Else
    Set CellRange = Range("I5:I188")
    For Each Cell In CellRange
    If (Cell.Value = -5000) Then
    Cell.EntireRow.Hidden = False
    End If
    Next
    End If
    End Sub
    Private Sub CheckBox2_Click()
    If CheckBox2.Value = True Then
    Set CellRange = Range("H5:H188")
    For Each Cell In CellRange
    If (((Cell.Value - Cell.Offset(0, 4).Value) / Cell.Value) = -0.1) And Cell.EntireRow.Hidden = False Then
    Cell.EntireRow.Hidden = True
    End If
    Next
    Else
    Set CellRange = Range("H5:H188")
    For Each Cell In CellRange
    If (((Cell.Value - Cell.Offset(0, 4).Value) / Cell.Value) = -0.1) And Cell.EntireRow.Hidden = True Then
    Cell.EntireRow.Hidden = False
    End If
    Next
    End If
    End Sub
    
    I5:I188 ist hier die Spalte mit den Abweichungen und H5:H188 diejenige mit den Ist_2015 Werten.
    Meine probleme sind nun: Erstens ist der Code nicht sehr elegant und ich suche nach Verbesserungsvorschlägen. Zweitens: Sofern in einer Zeile die Bedingungen für beide CheckBoxen erfüllt sind und beide Checkboxen markiert sind, werden beim entfernen von einem der Haken Zeilen eingeblendet, welche durch die andere CheckBox jedoch ausgeblendet bleiben sollten.
    Entschuldigt bitte den langen Text, ich habe versucht präzise zu sein. Und ich erwarte auch nicht zwingend eine vorgekaute Lösung, aber wenn wer Ideen oder Denkanstöße hätte, womit ich mich in diesem Fall am besten was eingehender Beschäftigen sollte, wäre ich sehr dankbar!
    Gruß, Jan

    Anzeige

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

    Betreff
    Datum
    Anwender
    Anzeige
    AW:Wie wär's mit dem AutoFilter?
    14.07.2015 10:29:56
    Michael
    Hallo Jan!
    Warum Du Dir hier wirklich VBA, insbesondere Checkboxen, antun willst, ist mir nicht ersichtlich.
    Du hast doch offenbar eine funktionierende Ausgangstabelle, der AutoFilter lässt sich bei markierter Zelle in der Tabelle mit [Strg + Umschalt + L] aufrufen. Mehrere Filterkriterien, wie von Dir gewünscht, können kombiniert werden; einfach mal ausprobieren. Evtl. brauchst Du für Deine zweite Filterung eine zusätzliche Spalte, aber das wär schon alles. Dafür VBA halte ich für Overkill!
    LG
    Michael

    Anzeige
    AW: AW:Wie wär's mit dem AutoFilter?
    14.07.2015 10:37:42
    TerPursche
    Hallo Michael,
    vielen Dank für deine schnelle Hilfe! Du hast sicherlich Recht, in meinem Kopf hat das Anfangs noch etwas mehr Sinn gemacht. Ausserdem finde ich die Übersichtlichkeit mit Hilfe von CheckBoxen "besser". Ich werde mich dann wahrscheinlich nach deinem Vorschlag richten. Dennoch noch der verzweifelte Versuch:
    Lassen sich AutoFilter speichern und per Checkbox ansprechen? :)
    Danke nochmal und Gruß!
    Jan

    Anzeige
    AW: AW:Wie wär's mit dem AutoFilter?
    14.07.2015 10:58:24
    TerPursche
    Okay, geht!
    Habs hinbekommen mit:
    Private Sub CheckBox1_Click()
    If CheckBox1.Value = True Then
    ActiveSheet.ListObjects("Tabelle1").Range.AutoFilter Field:=8, Criteria1:= _
    ">=5000", Operator:=xlAnd
    Else
    ActiveSheet.ListObjects("Tabelle1").Range.AutoFilter Field:=8
    End If
    End Sub
    
    Werde das zweite Problem dann mit der Hilfsspalte lösen.
    Danke und noch einen schönen Tag!
    Gruß, Jan

    Anzeige
    AW: Wollte Dir soeben noch schreiben...
    14.07.2015 11:16:01
    Michael
    Jan,
    ...dass sich ein AutoFilter prinzipiell per VBA ansteuern/setzen lässt. Schön, dass Du experimentiert und eine Lösung für Dich gefunden hast.
    Dir auch einen schönen Tag
    Michael
    ;
    Anzeige
    Anzeige

    Infobox / Tutorial

    Ein- und Ausblenden von Tabellenzeilen mit CheckBoxen in Excel


    Schritt-für-Schritt-Anleitung

    Um Tabellenzeilen in Excel mithilfe von CheckBoxen ein- oder auszublenden, kannst Du die folgenden Schritte befolgen:

    1. Erstelle eine Tabelle: Du benötigst eine Excel-Tabelle, in der Du die Daten hast, die Du filtern möchtest. Achte darauf, dass die Tabelle formatiert ist, damit Excel die Filterfunktionen erkennt.

    2. Füge CheckBoxen hinzu:

      • Gehe zu Entwicklertools > Einfügen und wähle CheckBox (Formularsteuerelement).
      • Platziere die CheckBoxen in der Nähe Deiner Tabelle.
    3. VBA-Editor öffnen: Drücke Alt + F11, um den VBA-Editor zu öffnen.

    4. Code hinzufügen:

      • Klicke mit der rechten Maustaste auf DieseArbeitsmappe, wähle Einfügen > Modul und füge den folgenden Code ein:
    Private Sub CheckBox1_Click()
        If CheckBox1.Value = True Then
            ActiveSheet.ListObjects("Tabelle1").Range.AutoFilter Field:=8, Criteria1:=">=5000"
        Else
            ActiveSheet.ListObjects("Tabelle1").Range.AutoFilter Field:=8
        End If
    End Sub
    1. Zusätzliche Logik für weitere CheckBoxen: Du kannst ähnliche Codes für andere CheckBoxen erstellen, um unterschiedliche Filter anzuwenden.

    2. Testen: Klicke auf die CheckBoxen, um die Filter zu aktivieren oder zu deaktivieren.


    Häufige Fehler und Lösungen

    • Fehler: CheckBox funktioniert nicht.

      • Lösung: Stelle sicher, dass die CheckBox mit dem richtigen VBA-Code verknüpft ist. Überprüfe auch, ob die Tabelle korrekt formatiert ist.
    • Fehler: Zeilen blenden sich nicht wie gewünscht aus.

      • Lösung: Überprüfe deine Bedingungen im VBA-Code. Achte darauf, dass die Feldnummer (Field:=8) korrekt ist und den gewünschten Spaltenindex anzeigt.

    Alternative Methoden

    Anstatt VBA zu verwenden, kannst Du auch die AutoFilter-Funktion in Excel nutzen. Dies ermöglicht Dir, Daten nach bestimmten Kriterien zu filtern, ohne das Risiko, dass VBA-Code nicht funktioniert. Um AutoFilter zu aktivieren, kannst Du die Tastenkombination Strg + Umschalt + L verwenden. Du kannst mehrere Filterkriterien gleichzeitig anwenden, um genau die Daten anzuzeigen, die Du benötigst.


    Praktische Beispiele

    Hier sind einige Beispiele für Filterbedingungen, die Du mit CheckBoxen oder AutoFilter umsetzen kannst:

    1. Zeilen mit Abweichungen von weniger als 5000€ ausblenden:

      If CheckBox1.Value = True Then
         ActiveSheet.ListObjects("Tabelle1").Range.AutoFilter Field:=8, Criteria1:="<5000"
      End If
    2. Zeilen mit einem Ist-Wert von 2015, der weniger als 10% von 2014 beträgt, ausblenden:

      If CheckBox2.Value = True Then
         ActiveSheet.ListObjects("Tabelle1").Range.AutoFilter Field:=7, Criteria1:="<0.1"
      End If

    Tipps für Profis

    • Verwende Hilfsspalten: Manchmal kann es hilfreich sein, zusätzliche Spalten zu erstellen, um komplexe Bedingungen zu berechnen. So kannst Du die Logik vereinfachen und die Filteroptionen klarer gestalten.

    • Kombiniere Filter: Nutze die Möglichkeit, mehrere CheckBoxen zu kombinieren. Achte jedoch darauf, dass Du die Logik im VBA-Code entsprechend anpasst, damit sich die Filter nicht gegenseitig beeinflussen.


    FAQ: Häufige Fragen

    1. Kann ich die AutoFilter-Einstellungen speichern?
    Ja, Du kannst AutoFilter-Einstellungen speichern, indem Du die Filterkriterien in einer Hilfsspalte speicherst und dann per VBA darauf zugreifst.

    2. Funktioniert das auch in Excel Online?
    Leider sind VBA-Makros in Excel Online nicht unterstützt. Du kannst jedoch die Filterfunktion direkt in Excel Online nutzen, um ähnliche Ergebnisse zu erzielen.

    Beliebteste Forumthreads (12 Monate)

    Anzeige
    Anzeige
    Entdecke mehr
    Finde genau, was du suchst

    Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

    Suche nach den besten Antworten
    Unsere beliebtesten Threads

    Entdecke unsere meistgeklickten Beiträge in der Google Suche

    Top 100 Threads jetzt ansehen
    Anzeige