und zwar funktioniert mein Code nur manchmal. Leider finde ich meinen Fehler nicht habe auch schon mehrere Versionen getestet.
Der Zellwert ist an eine Checkbox in einem Listenfeld geknüpft(funktioniert).
Heißt in der Zelle steht entweder Wahr oder FALSCH. (Tabelle2)
In der Tabelle1 sollen jetzt die Zeilen ausgeblendet werden wenn der zugeordnete Zellwert aus Tabelle2 Falsch ist.
Tabelle1 besteht aus verschiedenen Blöcken und je nach Wahrheitswert sollen die Blöcke sichtbar sein oder nicht.
Zwischen den Zeilen gibt es Leerzeilen die durch eine Oder-Funktion in Abhängigkeit der darunterliegenden Zeilen Ebenfalls Wahr oder Falsch sind.
(Blöcke werden komplett ausgeblendet)
Die Beispiel Datei geht bis Zeile 45.
Ich will den Code aber bis mindestens zur Zeile 166 ausführen können.
Manchmal klappt der Code und manchmal eben nicht.
Code:
Set WS = Worksheets("Tabelle1")
LastRow = WS.Cells(Rows.Count, 4).End(xlUp).Row
With WS
For i = 5 To 166 'LastRow-1
' Falls Wert in Zeile Falsch wird Zeile versteckt!
If .Cells(i, 4).Value = False Then
.Rows(i).Hidden = True
' Exit Sub
Else
Rows(i).Hidden = False
End If
Next i
End With
Alternative Codes: mit For Each
Dim c As Range
For Each c In WS.Range("D5:D45")
If c.Value = False Then
c.EntireRow.Hidden = True
Else
c.EntireRow.Hidden = False
End If
Next
mit Do Loop Until
i = 5
Do
Falls Wert in Zeile Falsch wird Zeile versteckt!
If .Cells(i, 4).Value = False Then
.Rows(i).Hidden = True
Exit Sub
Else
Rows(i).Hidden = False
End If
i = i + 1
Loop Until i = LastRow