Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1636to1640
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

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

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
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

187 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige