AW: Bestimmte Zahlenreihen löschen
08.11.2024 13:59:51
Yal
Hallo Jaschi,
sorry, habe gemurkst, weil ich zuerst einen "For Each" machen wollte, dann festgestellt, dass bei Löschen immer "zurück"* gehen muss und auf Zeilennummer umgestellt aber den "Z.Value" nicht angepasst.
So ist vollständig:
Sub löschen()
Dim i As Long
With Worksheets("Tabelle1") 'anpasssen
For i = .Cells(Rows.Count, "B").End(xlUp) To 2 Step -1 'bei Zeilen löschen wie beim Bodenwischen: immer zurück zu Tür, sonst tritt man ins Gewerk!
Select Case .Cells(i, "B").Value
Case "40-1" To "40-8", "50-1" To "50-8"
.Rows(i).Delete
End Select
Next
End With
End Sub
Das wäre die Lösung mit For Each. Geht aber beim Löschen nicht, aber beim Färben:
Sub Rot_färben()
Dim Z As Range
With Worksheets("Tabelle1") 'anpasssen
For Each Z In Range(.Range("B2"), .Cells(Rows.Count, "B").End(xlUp))
Select Case Z.Value
Case "40-1" To "40-8", "50-1" To "50-8"
Z.EntireRow.Interior.ColorIndex = 3 'rot
End Select
Next
End With
End Sub
*: warum beim Löschen rückwärts: wenn Du auf Zeile x bist und diese muss gelöscht werden, dann ist die Zeile x+1 die neue Zeile x, es springt aber sofort auf die nächste Zeile, die x+1, die aber die ehemalige x+2 war. Die ehemalige x+1 wird gar nicht behandelt, spricht, es wird nur jede zweite Zeile gelöscht (es sei denn, Du hast das Glück, dass nicht 2 Zeilen nacheinander zu löschen seien).
VG
Yal