AW: Zeilen bedingt löschen
29.10.2009 17:17:55
Erich
Hi Yvonne,
hier mit ein paar Kommentaren:
Sub BedLoesch()
Dim zz As Long, rngDel As Range, arrW As Variant
' arrW dient zur Aufnahme der Werte im Bereich A1:Znnn,
' wobei nnn die letzte in SPalte A belegte Zeile ist
' Abgeprüft werden die Werte des Arrays arrW.
' Das geht schneller, als die Zellen in der Tabelle zu prüfen.
arrW = Cells(1, 1).Resize(Cells(Rows.Count, 1).End(xlUp).Row, 10)
' zz ist der Zeilenzähler,
' von Zeile 1 bis zur letzten Zeile in Sp. A (obere Grenze von arrW)
For zz = 1 To UBound(arrW)
If IsDate(arrW(zz, 1)) Then ' Wert aus Spalte A soll Datum sein
' Werte aus Sp. D,F,G,J zusammen leer?
If arrW(zz, 4) & arrW(zz, 6) & arrW(zz, 7) & arrW(zz, 10) = "" Then
' rngDel nimmt je 1 Zelle (aus Spalte A) der zu löschenden Zeile auf
If rngDel Is Nothing Then
Set rngDel = Cells(zz, 1) ' erste zu löschende Zelle
Else
Set rngDel = Union(rngDel, Cells(zz, 1)) ' weitere zu löschende Zelle
End If
End If
End If
Next zz
' wenn rngDel nicht "Nichts" ist, lösche den Bereich,
' mit jeweils der gesamten Zeile
If Not rngDel Is Nothing Then rngDel.EntireRow.Delete
End Sub
Wenn du Fragen hast, kein Problem - dazu sind wir hier.
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort