Zellen mit Nullwert ausblenden

02/12/2008 - 10:07 von Harald Schlüter | Report spam
Guten Morgen zusammen,

Ich möchte in einem Arbeitsblatt alle Zeilen ausblenden in deren
Spalten F, K, P, U, Z und AE der Wert 0 steht.
Sobald in einer der Spalten ein Wert <> 0 steht, bleibt die Zeile
bestehen.

Ich habe folgenden VBA-Code, der die Zeilen löscht. Ich möchte sie
aber nur ausblenden. Wenn ich Rows(Y).Delete in .Hide àndere wird nur
die erste zeile ausgeblendet und dann aufgehört.

Kann mir jemand den korrekten VBA-Code nennen?


Sub LöscheFKPUZAE()
'Welche Spalten beachten?
Spalten = Array("F", "K", "P", "U", "Z", "AE")
'Letzte Zeile bestimmen
Ymax = Cells.SpecialCells(xlCellTypeLastCell).Row
'Starte ab Zeile 1
Y = 1
'Solange nicht die letzte Zeile erreicht wurde
Do While Y <= Ymax
'Nehme an das gelöscht werden kann
Lösche = True
'Durchlaufe die gewünschten Spalten
For I = LBound(Spalten) To UBound(Spalten)
'Ist der Wert <> 0?
If Range(Spalten(I) & Y) <> 0 Then
'Ja, dann diese Zeile nicht löschen
Lösche = False
'Fertig
Exit For
End If
Next
'Alle Spalten sind geprüft, kann gelöscht werden?
If Lösche Then
'Ja, Zeile löschen
Rows(Y).Delete
'Jetzt haben wir eine Zeile weniger
Ymax = Ymax - 1
Else
'Nein, nàchste Zeile
Y = Y + 1
End If
Loop
End Sub



Besten Dank und viele Grüße

Harald
 

Lesen sie die antworten

#1 Andreas Killer
02/12/2008 - 12:22 | Warnen spam
On 2 Dez., 10:07, Harald Schlüter wrote:

Kann mir jemand den korrekten VBA-Code nennen?


Jupp, ist eine ganz minimale Änderung.

Schaus Dir mal an, hàttest Du mit ein wenig Überlegung bestimmt auch
hinbekommen. Den Terminus "Lösche" durch "Verstecke" in den
Kommentaren zu ersetzen überlasse ich Dir. .-)

BTW, wenn Du die Rouine kopiert hast, dann klick mal irgendwo in
dieselbe und drückt mal auf F8. Dann kannst Du sie schrittweise laufen
lassen.

Happy Debugging, Andreas.

Sub VersteckeFKPUZAE()
'Welche Spalten beachten?
Spalten = Array("F", "K", "P", "U", "Z", "AE")
'Letzte Zeile bestimmen
Ymax = Cells.SpecialCells(xlCellTypeLastCell).Row
'Starte ab Zeile 1
Y = 1
'Solange nicht die letzte Zeile erreicht wurde
Do While Y <= Ymax
'Nehme an das gelöscht werden kann
Lösche = True
'Durchlaufe die gewünschten Spalten
For I = LBound(Spalten) To UBound(Spalten)
'Ist der Wert <> 0?
If Range(Spalten(I) & Y) <> 0 Then
'Ja, dann diese Zeile nicht löschen
Lösche = False
'Fertig
Exit For
End If
Next
'Alle Spalten sind geprüft, kann gelöscht werden?
If Lösche Then
'Ja, Zeile löschen
Rows(Y).Hidden = True
End If
'Nàchste Zeile
Y = Y + 1
Loop
End Sub

Ähnliche fragen