Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1436to1440
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

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

    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

    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

    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

    301 Forumthreads zu ähnlichen Themen

    Anzeige
    Anzeige
    Anzeige

    Links zu Excel-Dialogen

    Beliebteste Forumthreads (12 Monate)

    Anzeige

    Beliebteste Forumthreads (12 Monate)

    Anzeige
    Anzeige
    Anzeige