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

Forumthread: Zeilen automatisch einblenden und ausblenden

Zeilen automatisch einblenden und ausblenden
16.08.2018 16:24:46
Fabian
Hallo zusammen!
Zunächst vielen Dank für die vielen Tipps, die ich mir schon hier im Forum holen durfte!
Ich scheitere gerade an folgendem Problem:
Ich habe eine umfangreiche Berechnungstabelle in welcher ich automatisch Zeilen ein oder ausblenden möchte. - Falls beispielsweise bestimmte Berechnungsschritte nicht nötig sind, so sollen diese Zeilen automatisch ausgeblendet werden.
Um zu entscheiden welche Zeilen relevant sind gibt es eine Spalte in welcher die Relevanz (per normaler Excel-Formel) unterschieden wird und vermerkt ist mit WAHR / FALSCH.
Kurzfassung: Wie bekomme ich es hin, dass bei einer Änderung innerhalb der entsprechenden Zeilen diese ein- oder ausgeblendet werden?
Längere Fassung und bisherige Versuche.
Ich hatte schon unterschiedliche Ansätze, meist über For-Schleifen im Sub Worksheet_Calculate() oder Worksheet.Change. Leider sind die Fälle, in denen alles "klappt", mit sehr viel Rechenzeit verbunden, da das Ein- und Ausblenden wohl (manchmal?) eine Änderung darstellt, die Schleifen dann das Ereignis auslösen und in der Schleife immer wieder neu starten.
Was auch nicht funktioniert ist das Auslösen über Target.Address, da die "Relevanz"-Spalte nicht vom Anwender bearbeitet werden sondern per Formel.
Folgende Variante bleibt wiederholt beispielsweise die Schleife schier endlos - wohl weil jedes ausblenden eine Berechnung ist und den Sub wieder auslöst. (?)

Private Sub Worksheet_Calculate()
// Variablendeklaration, -Belegung etc.
Application.ScreenUpdating = False
'Überprüfen ob aktuell überhaupt automatisch ein- oder ausgeblendet werden soll
If automatisches_ein_und_ausblenen_eingeschaltet = True Then
'Alle Zeilen durchlaufen
For i = 1 To variable_gesamtzahl_der_zeilen
'Wenn Zeile nicht relevant ist, also nicht angezeigt werden soll
If ActiveSheet.Cells(i, var_num_der_relevanzspalte).Value = "FALSCH" Then
'Zeile verstecke n lassen
Rows(i).Hidden = True
Else
'Zeile anzeigen lassen, da Relevanz = WAHR
Rows(i).Hidden = False
End If
End If
'Statusbar anzeigen um den Fortschritt zu überwachen
Application.StatusBar = "Fortschritt: Zeile " & i & " von " & letzte_zeile & ". Bitte  _
warten..."
Next
Else
'Wenn das automatische Ein- und Ausblenden ausgeschaltet ist, sollen alle Zeilen angezeigt  _
werden.
Cells.EntireRow.Hidden = False
End If
Application.StatusBar = False
Application.ScreenUpdating = True
End Sub

Habt ihr vielleicht Ideen wie ich weiterkomme? Hoffe es ist halbwegs verständlich was ich meine!
Liebe Grüße!
Fabian
Anzeige

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Zeilen automatisch einblenden und ausblenden
16.08.2018 17:07:05
Klexy
Da hab ich eine Idee, aber nur wenn du die Datei hochlädst.
Keine Zeit, selber Muster zu bauen.
Zumal deine Beschreibung unklar ist: "bei einer Änderung innerhalb der entsprechenden Zeilen diese einzublenden" - Wie willst du in einer ausgeblendeten Zeile was ändern?
AW: Zeilen automatisch einblenden und ausblenden
16.08.2018 17:29:08
onur
Wenn du mit dem Change-Ereignis nicht die Zelle direkt überwachen kannst (da Änderung durch Formel), musst du halt die Zelle(n) überwachen, die (bei einer manuellen Eingabe) zu einer Änderung des Formelergebnisses führen können, sprich die Zellen, die in der Formel mit drinhängen und sie beeinflussen.
Siehe Beispiel:
https://www.herber.de/bbs/user/123381.xlsm
Anzeige
AW: Zeilen automatisch einblenden und ausblenden
16.08.2018 18:13:57
Fabian
Hier folgend ein Beispiel:
https://www.herber.de/bbs/user/123382.xlsm
@Klexy: Mit der Änderung in der Zeile meinte ich die Änderung welche durch die Formel hervorgerufen wird.
@onur: Das hatte ich auch schon überlegt, aber da die Berechnungen äußerst komplex sind, ist leider nicht möglich, bzw. viel zu unübersichtlich in die Berechnungsformeln auch noch den Teil zu integrieren, welcher für das Ein- und Ausblenden der Zeile verantwortlich ist :(
Liebe Grüße und einen schönen Abend euch!
Fabian
Anzeige
AW: Zeilen automatisch einblenden und ausblenden
17.08.2018 09:03:21
Hajo_Zi
das muss uns nicht klar sein warum Change nicht gehe soll, bei mir geht es Calculate ist aus kommentiert.
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 2 Then
Rows(Target.Row).EntireRow.Hidden = Target.Offset(0, 1) = True
End If
End Sub
Wie Du die wieder einblenden willst, muss uns nicht klar sein.

Beiträge von Werner, Luc, robert, J.O.Maximo und folgende lese ich nicht.
Anzeige
AW: Zeilen automatisch einblenden und ausblenden
17.08.2018 17:30:54
Klexy
Spalte B wird überwacht.
Sobald sich in Spalte B etwas ändert, wird Spalte C nach Zellen mit "Falsch" durchsucht, bei denen die Zeilen ausgeblendet werden. Alle anderen Zeilen werden eingeblendet.
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 2 Then
Range(Cells(1, Target.Column + 1), Cells(ActiveSheet.UsedRange.Rows.Count, Target. _
Column + 1)).Select
For Each r In Range(Cells(1, Target.Column + 1), Cells(ActiveSheet.UsedRange.Rows.Count, _
Target.Column + 1))
r.Select
If r.Value = "Falsch" Then
r.EntireRow.Hidden = True
Else
r.EntireRow.Hidden = False
End If
Next r
End If
End Sub
Du musst nur sicherstellen, dass in Zeilen, die in Spalte B Eingabefelder enthalten, in Spalte C niemals "Falsch" steht.
Die beiden Zeilen mit Select sind zur Anschaulichkeit, was passiert, wenn du das Makro Schritt für Schritt durchlaufen lässt. In der endgültigen Version kannst du die beiden Zeilen auskommentieren.
Anzeige
AW: Zeilen automatisch einblenden und ausblenden
18.08.2018 12:19:27
Gerd
Hallo
Private Sub Worksheet_Calculate()
Dim Z As Range, AUS As Range
On Error GoTo EX
Application.Calculation = xlCalculationManual
Application.EnableEvents = False
Application.ScreenUpdating = False
Range("C2:C21").EntireRow = False
If Range("f_automatisches_ein_und_ausblenen_eingeschaltet") = True Then
For Each Z In Range("C2:C21")
If Z.Value = False Then
If AUS Is Nothing Then
Set AUS = Z
Else
Set AUS = Union(AUS, Z)
End If
End If
Next
End If
If Not AUS Is Nothing Then
AUS.EntireRow.Hidden = True
Set AUS = Nothing
End If
EX:
Application.Calculation = xlCalculationAutomatic
Application.EnableEvents = True
Application.ScreenUpdating = True
End Sub

Gruß Gerd
Anzeige

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Zeilen automatisch einblenden und ausblenden in Excel


Schritt-für-Schritt-Anleitung

Um Zeilen in Excel automatisch ein- und auszublenden, kannst du VBA (Visual Basic for Applications) verwenden. Hier ist eine einfache Schritt-für-Schritt-Anleitung:

  1. Öffne den VBA-Editor:

    • Drücke ALT + F11, um den VBA-Editor zu öffnen.
  2. Füge ein neues Modul hinzu:

    • Klicke mit der rechten Maustaste auf "VBAProject (deineDatei.xlsx)" und wähle Einfügen > Modul.
  3. Füge den folgenden Code ein:

    Private Sub Worksheet_Calculate()
       Dim i As Integer
       Application.ScreenUpdating = False
       For i = 1 To ActiveSheet.UsedRange.Rows.Count
           If Cells(i, 2).Value = "FALSCH" Then
               Rows(i).Hidden = True
           Else
               Rows(i).Hidden = False
           End If
       Next i
       Application.ScreenUpdating = True
    End Sub
  4. Schließe den VBA-Editor:

    • Drücke ALT + Q, um den Editor zu schließen und zurück zu Excel zu gelangen.
  5. Teste die Funktion:

    • Ändere die Werte in der relevanten Spalte, um zu sehen, ob die Zeilen automatisch ein- oder ausgeblendet werden.

Häufige Fehler und Lösungen

  • Excel blendet Zeilen nicht ein:

    • Stelle sicher, dass der Code korrekt in das richtige Arbeitsblattmodul eingefügt wurde.
  • Automatisches Ausblenden funktioniert nicht:

    • Überprüfe, ob die Berechnungsoptionen auf "Automatisch" eingestellt sind. Gehe zu Formeln > Berechnungsoptionen und wähle Automatisch.
  • Leere Zeilen werden nicht ausgeblendet:

    • Stelle sicher, dass die Zellen in der relevanten Spalte tatsächlich "FALSCH" enthalten. Möglicherweise sind die Zellen nur leer und nicht mit dem Wort "FALSCH" gefüllt.

Alternative Methoden

  1. Verwendung von Excel-Formeln:

    • Du kannst eine Hilfsspalte erstellen, die basierend auf den Bedingungen TRUE/FALSE zurückgibt und dann die Filterfunktion verwenden, um nur die relevanten Zeilen anzuzeigen.
  2. Datenfilter verwenden:

    • Nutze die Autofilter-Funktion von Excel, um nur die Zeilen anzuzeigen, die bestimmte Kriterien erfüllen.
  3. Tastenkombinationen für das Einblenden:

    • Du kannst STRG + SHIFT + 9 verwenden, um alle ausgeblendeten Zeilen in Excel wieder einzublenden.

Praktische Beispiele

Beispiel 1: Automatisches Ausblenden von leeren Zeilen

Private Sub Worksheet_Calculate()
    Dim cell As Range
    Application.ScreenUpdating = False
    For Each cell In Range("A1:A100")
        If cell.Value = "" Then
            cell.EntireRow.Hidden = True
        Else
            cell.EntireRow.Hidden = False
        End If
    Next cell
    Application.ScreenUpdating = True
End Sub

Beispiel 2: Zeilen einblenden, wenn Bedingung erfüllt

Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Intersect(Target, Range("B1:B100")) Is Nothing Then
        If Target.Value = "WAHR" Then
            Target.EntireRow.Hidden = False
        Else
            Target.EntireRow.Hidden = True
        End If
    End If
End Sub

Tipps für Profis

  • Verwende das Debugging-Tool: Wenn dein Code nicht wie gewünscht funktioniert, nutze die Debugging-Funktionen im VBA-Editor, um den Code Schritt für Schritt zu durchlaufen.

  • Kombiniere mit Datenvalidierung: Um sicherzustellen, dass die Eingaben in der relevanten Spalte konsistent sind, kannst du Datenvalidierung verwenden.

  • Makros speichern: Speichere deine Excel-Datei als Excel-Arbeitsmappe mit Makros (*.xlsm), um sicherzustellen, dass deine VBA-Codes erhalten bleiben.


FAQ: Häufige Fragen

1. Wie kann ich ausgeblendete Zellen wieder einblenden? Um ausgeblendete Zellen in Excel wieder einzublenden, kannst du STRG + SHIFT + 9 verwenden, um alle ausgeblendeten Zeilen anzuzeigen.

2. Warum funktioniert mein VBA-Code nicht? Überprüfe, ob der Code im richtigen Arbeitsblattmodul eingefügt ist und ob die Berechnungsoptionen in Excel auf "Automatisch" eingestellt sind.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige