Ich habe eine Dropdown-Liste in Zelle D3. Wenn Sie D3 ändern, ändern sich die Zeilenwerte, einige mit Zahlen über/unter 0 und einige bleiben eine klare 0 in Spalte I. Ich brauche ein Makro, das in einer Schleife läuft, und das Ergebnis sollte sein, dass, wenn ich D3 ändere, alle Informationen mit dem exakten 0-Wert in Spalte I ausgeblendet werden, ABER wenn ich D3 erneut ändere, wird es zurückgesetzt und alle Zeilen, die eine 0 in Spalte I enthalten, werden erneut ausgeblendet.
Antwort1
Um ein Makro mit Änderungen auf einem Blatt auszulösen, können Sie mit dem
Ereignis Worskheet.Change ein Unterelement auf dem Arbeitsblatt platzieren:Private Sub Worksheet_Change(ByVal Target As Range)
Um die Spalte „I“ zu durchlaufen, gibt es mehrere Möglichkeiten. Wir können den Bereich definieren und eine For each
Schleife ausführen oder ein iterierbares Objekt verwenden.
Um eine Schleife durch die gesamte Spalte zu vermeiden, können wir die letzte verwendete Zeile der Spalte auf verschiedene Weise finden. Cells(Rows.Count, 9).End(xlUp).Row
Dies ist eine davon.
Das Überprüfen des Wertes der Zelle in der Schleife ist unkompliziert genug und um die Zeile auszublenden, können wir einfach verwendenRange.EntireRow.Hidden = True
Das Ganze könnte dann etwa so aussehen:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim hide As Boolean, i As Long
'Intersect validates that the change is only happening in "D3" to be valid
If Not Intersect(Target, Range("D3")) Is Nothing And Target.Count = 1 Then
' i = starting range - to - last row
For i = 4 To Cells(Rows.Count, 9).End(xlUp).Row
hide = False
If Cells(i, 9).Value = "0" Then hide = True
Cells(i, 9).EntireRow.Hidden = hide
Next i
End If
End Sub