Wie kann ich meine Excel (VBA) "Zeile Ein- und Ausblenden Formel" vereinfachen?
Hallo zusammen
Ich suche nach einer schnelleren Formellösung, welche alle Zeilen ausblendet, wenn in Spalte A der jeweiligen Zeile das Formelergebnis 0 steht und wieder einblendet, wenn das Ergebnis 1 ist. Die Rechnung passiert dabei auf einer anderen Tabelle; in der Tabelle mit dem Makro steht dann lediglich: ='Tabelle2'!A11 (Dieser Wert wird somit übertragen und ändert sich demzufolge)
Makro:
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
If Range("A11") = 0 Then
Rows("11:12").EntireRow.Hidden = True
End If
If Range("A11") <> 0 Then
Rows("11:12").EntireRow.Hidden = False
End If
If Range("A13") = 0 Then
Rows("13:14").EntireRow.Hidden = True
End If
If Range("A13") <> 0 Then
Rows("13:14").EntireRow.Hidden = False
End If
If Range("A15") = 0 Then
Rows("15:16").EntireRow.Hidden = True
End If
If Range("A15") <> 0 Then
Rows("15:16").EntireRow.Hidden = False
End If
...
(UNTERBRUCH) ...........das geht weiter bis "A360"
...
End Sub
Dieser Ablauf dauert jedoch eine gefühlte Ewigkeit; geht das schneller?
Danke euch.
Gruss Swen
2 Antworten
![](https://images.gutefrage.net/media/user/IchMalWiederXY/1526297634563_nmmslarge__8_3_247_247_26a3615ed87a22b0c5c78d0564a9f676.jpg?v=1526297635000)
Baue um die Schleife.
Application.Screenupdate = False
Application.EnableEvents = False
For i = 11 To 15 Step 2
If Range("A" & i).Value = 0 Then
Rows(i & ":" & i + 1).EntireRow.Hidden = True
Else
Rows(i & ":" & i + 1).EntireRow.Hidden = False
End If
Next i
Application.Screenupdate = True
Application.EnableEvents = True
![](https://images.gutefrage.net/media/default/user/13_nmmslarge.png?v=1551279448000)
Mach eine Schleife, anstatt jede einzelne Zeile aufzuführen.
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
Dim i As Integer
For i = 11 To 15 Step 2
If Range("A" & i).Value = 0 Then
Rows(i & ":" & i + 1).EntireRow.Hidden = True
Else
Rows(i & ":" & i + 1).EntireRow.Hidden = False
End If
Next i
End Sub
Keine Ahnung, ob es schneller geht.
Aber besser und übersichtlicher ist es.
![](https://images.gutefrage.net/media/default/user/13_nmmslarge.png?v=1551279448000)
habs nochmals schnell bei mir eingegeben...
seltsam. Bei mir geht das ein paar Sekunden.
Du kannst versuchen, vor
"For i = 11....." den Befehl
Application.ScreenUpdating = False
einzufügen und nach "Next i" wieder
Application.ScreenUpdating = True
Das lässt es nochmal schneller laufen.
Hey das ist eine echt tolle Vereinfachung. Danke dafür.
Zeitlich sinds dann halt doch noch 5min (Zeile 11 - 709) aber das ist wohl einfach so.
Danke