Hab zwar schon länger nix meher in VBA gemacht, aber
trotzdem
Wie immer gibt es da mehrere Lösungen
-
Ganzes Tabellenblatt durchsuchen und wahlweise Zeile löschen (DoDelete = True) oder nur Inhalt der Zeile löschen (DoDelete = False)
Dim Firstrow, Lastrow, Lrow, c, LS As Long
Dim Treffer As Boolean
'Erste Zeile mit Werten ermitteln
Firstrow = ActiveSheet.UsedRange.Cells(1).Row
'Letzte Zeile mit werten ermitteln
Lastrow = ActiveSheet.UsedRange.Rows(ActiveSheet.UsedRange.Rows.Count).Row
'Letzte Spalte mit Werten ermiiteln
LS = Cells.Find("*", [A1], , , xlByColumns, xlPrevious).Column
'Löschen mit oder ohne Zeilen zu verschieben
DoDelete = False
ActiveSheet.Select
For Lrow = Firstrow To Lastrow
Treffer = False
For c = 1 To LS
With ActiveSheet.Cells(Lrow, c)
w = .Text
If Not IsError(.Value) Then
Treffer = .Text Like „*mn“
End If
If Treffer = True Then
If DoDelete = False Then
.ClearContents
Else
.EntireRow.Delete
Lastrow = Lastrow - 1
Lrow = Lrow - 1
End If
Exit For
End If
End With
Next c
Next Lrow
-
Schnelle Methode Zeilen zu löschen über Filter auf Spalte (Hier Spalte D)
With ActiveSheet
.AutoFilterMode = False
With Range(„d1“, Range(„d“ & Rows.Count).End(xlUp))
.AutoFilter 1, „=*mn“
On Error Resume Next
'Wenn Inhalte nur gelöscht werden sollen
'.ClearContents
.EntireRow.Delete
End With
.AutoFilterMode = False
End With