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

Forumthread: Zeilen ein/ausblenden mit Makro

Zeilen ein/ausblenden mit Makro
Rico
Hallo Leute,
ich habe viele Varianten gelesen, aber entweder sind es solche die ich nicht möchte oder sie funktionieren bei mir dann doch nicht ganz.
Ich möchte per Kontrollkästchen (welches ist geeigneter, Formularsteuerelement oder ActivX-Steuerelement?) einen Zeilenbereich ein und ausblenden.
In meinem Versuchsbeispiel liegt das Kontrollkästchen selbst in Zelle "O28". Es ist grundsätzlich auf "nicht aktiv" eingestellt und somit sollen anfangs die Zeilen (35:39) nicht angezeigt werden
(1.Problem: selbst das gelinkt mir nicht, es ist immer so eingestellt wie es beim letzten Speichern war, später dazu mehr. In "P28" wird jeweils WAHR und FALSCH ausgegeben falls das nötig ist. Geht aber auch ohne wie ich merke, mit Bezug auf O28.
Bei Auswahl (Häckchen setzen bei "O28" - oder in "P28" WAHR) sollen die Zeilen (35:39) eingeblendet werden. Bei umgekehrter Auswahl (Häckchen entfernen bei "O28" - oder in "P28" FALSCH) sollen die Zeilen (35:39) wieder ausgeblendet werden.
Habe beim googeln mal gelesen, das ich dann 2 Makros brauche oder eine Umschaltfläche nutzen soll, aber Umschaltfläche ist wenig selbsterklärend, da kommen nur Rückfragen von Endusern. Geht aber zur Not auch.
Später sollen es bis zu 63 Kontrollkästchen sein = Anordnung von 63 aufzurufender Gebäude in ein und dem selben Tabellenblatt mit jeweiligem Zeilenbereich(xx:xx).
2. Problem: Wenn es nicht geht, dass alle Kontrollkästchen bei Start inaktiv sind, dann bräuchte ich wohl eine Schaltfläche zum Deaktivieren aller Kästchen. Mir wäre lieb es geht ohne weitere Schaltfläche.
3. Problem: Da ich absoluter Leihe bin und mir das hier für meine Diplomarneit alles per learning by doing beibringe, weiss ich auch nicht wie ich hintereinander weg den Befehl für das folgende Kontrollkästchen angebe. Also in "O29" das nächste Kästchen und Zeilen (40:44) ein/ausblenden. Bitte zeigen wie das geht :)
******
Damit ihr seht wie weit ich bisher war, hier der Versuch mit ausblenden der Zeile 35, _ einblenden hat dann auch bei etlichen Varianten leider nicht mehr geklappt.

Public Sub Worksheet_Change(ByVal Target As Range)
If Worksheets("Tabelle1").Range("P28").Value = Falsch Then
Worksheets("Tabelle1").Rows(35).Hidden = True
Else
Worksheets("Tabelle1").Rows(35).Hidden = False
End If
End Sub

******
Vielen Dank schonmal fürs grübeln
Rico
Anzeige

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Zeilen ein/ausblenden mit Makro
25.07.2012 15:41:56
UweD
Hallo
- Entwicklertools Panel auswählen
- Entwurfsmodus einstellen
- einfügen activeX- Elemente : hier kontrollkästchen
- doppelclick darauf
- Dann diese beiden Makros reinkopieren
- Entwurfsmodus wieder ausstellen
- Das Erste Makro schaltet beim aktivieren der Tabelle immer ein
- Das Zeite wechselt

Private Sub Worksheet_Activate()
' beim aktivieren dieses Blattes erfolgt "reset"
Worksheets("Tabelle1").Rows(35).Hidden = False
' weitere...
End Sub
Private Sub CheckBox1_Click()
With Worksheets("Tabelle1")
.Rows(35).Hidden = True = Not (.Rows(35).Hidden)
End With
End Sub

Gruß UweD

Die Datei https://www.herber.de/bbs/user/81159.xlsm wurde aus Datenschutzgründen gelöscht


Anzeige
AW: Zeilen ein/ausblenden mit Makro
25.07.2012 15:49:46
UweD
Hallo
das ist noch was zu viel.
.Rows(35).Hidden = Not (.Rows(35).Hidden)
Gruß UweD
AW: Zeilen ein/ausblenden mit Makro
26.07.2012 10:06:35
Rico
Guten Morgen,
vielen Dank für die schnelle Antwort, Uwe.
Soweit hat das geklappt.
Wie bekomme ich einen Bereich von Zeile (35:39) hin? Den Doppelpunkt möchte er ja nicht, und ich will mir keinen WOLF schreiben wenn pro Checkbox 50-100 Zeilen ausgeblendet werden sollen.
Private Sub Worksheet_Activate()
' beim aktivieren dieses Blattes erfolgt "reset"
Worksheets("Tabelle1").Rows(35).Hidden = True
Worksheets("Tabelle1").Rows(36).Hidden = True
Worksheets("Tabelle1").Rows(37).Hidden = True
Worksheets("Tabelle1").Rows(38).Hidden = True
Worksheets("Tabelle1").Rows(39).Hidden = True
Worksheets("Tabelle1").Rows(40).Hidden = True
Worksheets("Tabelle1").Rows(41).Hidden = True
Worksheets("Tabelle1").Rows(42).Hidden = True
Worksheets("Tabelle1").Rows(43).Hidden = True
Worksheets("Tabelle1").Rows(44).Hidden = True
' weitere...
End Sub
=> hier dachte ich, er würde alle Zeilen beim Aufruf der Datei ausblenden, sodass von vornherein Übersichtlichkeit gegeben ist. Bei mir tut sich da nix.
Private Sub CheckBox1_Click()
With Worksheets("Tabelle1")
.Rows(35).Hidden = Not (.Rows(35).Hidden)
.Rows(36).Hidden = Not (.Rows(36).Hidden)
.Rows(37).Hidden = Not (.Rows(37).Hidden)
.Rows(38).Hidden = Not (.Rows(38).Hidden)
.Rows(39).Hidden = Not (.Rows(39).Hidden)
End With
End Sub
Private Sub CheckBox2_Click()
With Worksheets("Tabelle1")
.Rows(40).Hidden = Not (.Rows(40).Hidden)
.Rows(41).Hidden = Not (.Rows(41).Hidden)
.Rows(42).Hidden = Not (.Rows(42).Hidden)
.Rows(43).Hidden = Not (.Rows(43).Hidden)
.Rows(44).Hidden = Not (.Rows(44).Hidden)
End With
End Sub

=> klappt wunderbar, ist aber noch nicht Idiotensicher.
Wenn der Enduser die Zeilen ohne die Checkbox einblendet und es so abspeichert, dann ist die Auswahl für betreffende Zeilen umgekehrt, also mit Click in die Box wird aus- statt eingeblendet.
Das Problem löst sich von selbst wenn:
- bei Start der Datei alle angegebenen Zeilenbereiche Bsp. (35:39) und (40:44) immer ausgeblendet sind und
- bei Start der Datei alle Checkboxen inaktiv, also nicht ausgewählt sind.. geht das? Unter Steuerelement formatieren gibts dazu ja nichts.
Vielen Dank
Rico
Anzeige
AW: Zeilen ein/ausblenden mit Makro
26.07.2012 13:36:57
UweD
Hallo
a)
das mit mehreren Zeilen geht so... ("35:40")
Private Sub CheckBox1_Click()
Dim Bereich
Set Bereich = Worksheets("Tabelle1").Rows("35:40")
Bereich.Hidden = True = Not (Bereich.Hidden)
End Sub
b)
ich hatte das "Worksheet_Activate()" Ereignis des Tabellenblatts für den Reset verwendet.
du hast Recht, wenn das Blatt beim öffnen der Datei schon ausgewählt ist, dann wird es ja nicht neu aktiviert und das Makro läuft nicht ab.
Ich habe den Code in das "Workbook_Open()" von "DieseArbeitsmappe" eingebaut und auch noch abgeändert:
c)
idiotensicher...
So wird die Checkbox erst ausgeschaltet und dann sicherheitshalber noch alle Zeilen eingeblendet.
Private Sub Workbook_Open()
Dim Bereich
Set Bereich = Worksheets("Tabelle1").Rows("35:40")
Worksheets("Tabelle1").CheckBox1.Value = False
Bereich.Hidden = False
End Sub

Also komplett reset.
OK?
Gruß UweD
https://www.herber.de/bbs/user/81169.xlsm
Anzeige
AW: Zeilen ein/ausblenden mit Makro
26.07.2012 14:44:41
Rico
Perfekt, genau so wollte ich es.
Vielen vielen Dank UweD.
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

Zeilen ein- und ausblenden mit Excel Makro


Schritt-für-Schritt-Anleitung

  1. Entwicklertools aktivieren: Stelle sicher, dass das Entwicklertools-Tab in Excel aktiviert ist. Falls nicht, gehe zu Datei > Optionen > Menüband anpassen und aktiviere das Kästchen für „Entwicklertools“.

  2. Kontrollkästchen einfügen:

    • Wähle im Entwicklertools-Tab „Einfügen“.
    • Füge ein ActiveX-Steuerelement oder ein Formularsteuerelement (Kontrollkästchen) in die gewünschte Zelle ein.
  3. Makros schreiben:

    • Klicke mit der rechten Maustaste auf das Kontrollkästchen und wähle „Code anzeigen“.
    • Füge den folgenden VBA-Code ein, um die Zeilen ein- und auszublenden:
    Private Sub CheckBox1_Click()
       Dim Bereich
       Set Bereich = Worksheets("Tabelle1").Rows("35:39")
       Bereich.Hidden = Not (Bereich.Hidden)
    End Sub
  4. Reset beim Öffnen der Datei:

    • Um sicherzustellen, dass die Zeilen beim Öffnen der Datei ausgeblendet sind, füge den folgenden Code in „DieseArbeitsmappe“ ein:
    Private Sub Workbook_Open()
       Dim Bereich
       Set Bereich = Worksheets("Tabelle1").Rows("35:39")
       Worksheets("Tabelle1").CheckBox1.Value = False
       Bereich.Hidden = True
    End Sub
  5. Testen: Speichere deine Arbeit und teste das Kontrollkästchen, um sicherzustellen, dass die Zeilen wie gewünscht ein- und ausgeblendet werden.


Häufige Fehler und Lösungen

  • Problem: Zeilen werden nicht beim Öffnen ausgeblendet.

    • Lösung: Stelle sicher, dass der Workbook_Open-Code korrekt in „DieseArbeitsmappe“ eingefügt ist.
  • Problem: Kontrollkästchen bleibt aktiv, obwohl Zeilen ausgeblendet sind.

    • Lösung: Füge einen Reset-Befehl im Workbook_Open-Ereignis hinzu, um das Kontrollkästchen zu deaktivieren.
  • Problem: Fehlermeldung beim Ausführen des Makros.

    • Lösung: Überprüfe, ob die Zeilenreferenzen korrekt sind und das Arbeitsblatt den richtigen Namen hat.

Alternative Methoden

Wenn du keine Makros verwenden möchtest, gibt es auch andere Möglichkeiten:

  • Excel-Funktionen: Nutze die „Wenn-Dann“-Funktion, um Zeilen basierend auf bestimmten Bedingungen anzuzeigen oder auszublenden. Dies erfordert jedoch manuelle Anpassungen, um die Sichtbarkeit zu steuern.

  • Filter verwenden: Einfache Filterfunktionen in Excel ermöglichen es dir, Daten dynamisch anzuzeigen, ohne Makros zu verwenden.

  • Bedingte Formatierung: Diese Methode kann genutzt werden, um Daten visuell zu kennzeichnen, anstatt Zeilen auszublenden.


Praktische Beispiele

  • Beispiel für mehrere Kontrollkästchen: Um mehrere Zeilenbereiche mit verschiedenen Kontrollkästchen zu verwalten, wiederhole den Code für jedes Kontrollkästchen und passe die Zeilenbereiche an:

    Private Sub CheckBox2_Click()
      Dim Bereich
      Set Bereich = Worksheets("Tabelle1").Rows("40:44")
      Bereich.Hidden = Not (Bereich.Hidden)
    End Sub
  • Automatisches Ausblenden: Um alle Kontrollkästchen und deren Zeilen beim Öffnen der Datei zu deaktivieren, kannst du eine Schleife verwenden, um durch alle Kontrollkästchen zu iterieren.


Tipps für Profis

  • Code optimieren: Verwende Arrays, um die Zeilenreferenzen zu speichern, was deinen Code kürzer und übersichtlicher macht.

  • Fehlerbehandlung einfügen: Nutze On Error Resume Next, um möglichen Laufzeitfehlern vorzubeugen.

  • Verwende benannte Bereiche: Anstatt feste Zeilenreferenzen zu verwenden, kannst du benannte Bereiche in Excel definieren, um deinen Code flexibler zu gestalten.


FAQ: Häufige Fragen

1. Kann ich auch mehrere Zeilen gleichzeitig ausblenden?
Ja, du kannst mehrere Zeilen gleichzeitig ausblenden, indem du den Bereich in der Zeilenanweisung wie folgt angibst: Rows("35:40").

2. Was muss ich tun, wenn das Kontrollkästchen nicht funktioniert?
Überprüfe, ob der Code korrekt eingefügt ist und ob das Kontrollkästchen richtig mit dem VBA-Makro verknüpft ist.

3. Ist es möglich, Zeilen ohne Makros automatisch auszublenden?
Ja, du kannst Excel-Funktionen oder Filter verwenden, um Daten dynamisch anzuzeigen, aber dies ist nicht so leistungsfähig wie VBA-Makros.

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