Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

VBA bestimmte Zeilen löschen
#1
Guten Abend zusammen,

ich benötige einen kurzen Rat. ich möchte Zeiten mit bestimmten Inhalt löschen, das geht auch nur wenn mehr als eine Zeile nacheinander steht, rückt die zweite Zeile nach und wird nicht vom Code erfasst.

1
X
1
X
X
X
X
1
X
X

alle Zeilen mit X sollen weg. Meine Lösung:

Private Sub löschen_Zeile()

For i = 0 To ThisWorkbook.Worksheets("Zeilen_löschen").Cells(Worksheets("Zeilen_löschen").Rows.Count, 1).End(xlUp).Row
If Cells(1 + i, 1) = "x" Then
Cells(1 + i, 1).EntireRow.Delete
'Cells(1+i, 2) = "X"
End If

Next i
End Sub

oder

Sub ZeilenLoeschen_()
Dim Zelle As Range
For Each Zelle In Range("a1:a20")
    If Zelle = "x" Then
        Zelle.EntireRow.Delete
    End If
Next Zelle
End Sub



Problem: Beide Codes müsste ich 4 mal starten um alle "X" raus zu bekommen. Gibt es da eine Sofortlösung?

Besten Dank und viele Grüße
Antworten Top
#2
die schleife von unten nach oben laufen lassen. 
also for i = Maxanzahl to 0  step -1  'bzw. to 1 weil Zeile 0 gibt es nicht
Antworten Top
#3
Hinweis: Das ganze geht auch ohne Makro, indem du den Autofilter benutzt. Alle x auf einmal löschen ist mit wenigen Klicks erledigt.
Bzw. lässt sich diese Vorgehensweise auch per Makro erledigen und ist wesentlich schneller, als die Schleifenlösung. Bei 500 Zeilen sicher kein Unterschied erkennbar, bei 10.000 auf jeden Fall.
Schöne Grüße
Berni
Antworten Top
#4
z.B. so?

Code:
Sub LoescheX()

    With ActiveSheet.UsedRange.Columns(1)
        .Replace "X", "", 1
        .SpecialCells(4).EntireRow.Delete
    End With

End Sub
Herzliche Grüße aus dem Rheinland
Jörg

[Windows 10, Microsoft 365]
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste