AW: Zeilen löschen, wenn Bedingung in Spalte erfüllt
17.07.2008 16:35:00
Erich
Hallo Vorname(?),
schau dir hier mal ein paar Möglichkeiten an:
Option Explicit
Sub löschen()
Dim i As Long ' genau deklarieren ist besser
Dim rngL As Range
' löscht auch B3a
For i = Cells(Rows.Count, 20).End(xlUp).Row To 1 Step -1
' On Error Resume Next ' das würde ich weglassen!
If (Left(Cells(i, 20), 1) = "B" Or Left(Cells(i, 20), 1) = "C") _
And Mid(Cells(i, 20), 2, 1) Like "[0-9]" Then
Rows(i).Delete
End If
Next
' löscht B3a nicht
For i = Cells(Rows.Count, 20).End(xlUp).Row To 1 Step -1
If (Left(Cells(i, 20), 1) = "B" Or Left(Cells(i, 20), 1) = "C") _
And IsNumeric(Mid(Cells(i, 20), 2, 1)) Then
Rows(i).Delete
End If
Next
' wie davor, aber schneller
For i = Cells(Rows.Count, 20).End(xlUp).Row To 1 Step -1
If (Left(Cells(i, 20), 1) = "B" Or Left(Cells(i, 20), 1) = "C") _
And IsNumeric(Mid(Cells(i, 20), 2, 1)) Then
If rngL Is Nothing Then
Set rngL = Cells(i, 1)
Else
Set rngL = Union(rngL, Cells(i, 1))
End If
End If
rngL.EntireRow.Delete
Next
For i = Cells(Rows.Count, 20).End(xlUp).Row To 1 Step -1
If Len(Cells(i, 20)) > 1 Then
If (Left(Cells(i, 20), 1) = "B" Or Left(Cells(i, 20), 1) = "C") _
And IsNumeric(Right(Cells(i, 20), Len(Cells(i, 20)) - 1)) Then
Rows(i).Delete
End If
End If
Next
End Sub
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort