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
ich hoffe es ist so einfach, wie es klingt. Du bist auch bereits auf dem richtigen Weg, Dein Vergleichsoperator ist allerdings LIKE und Du benötigst eine Schleife!
Dim lngZeile as Long
Dim Ende as Boolean
Ende = False
lngZeile = 'Hier bitte die unterste zu prüfende Zeile fest eintragen, z.B. 405, wenn die letzte Zeile mit User-IDs die Zeile 405 ist
While Not Ende
DoEvents
If Cells(lngZeile, 1).Value Like „mn*“ Then
Rows(lngZeile).Delete
End If