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