Ich habe eine Subroutine, die Zeilen in einem Bereich mit etwa 1000 Zeilen löscht. Zeilen werden in einem Kriterium gelöscht. Der folgende Code funktioniert.Excel VBA löscht Zeilen in einer for-Schleife Zeilen fehlt
Wenn ich jedoch das Makro ausführen, muss ich es normalerweise 4 Mal ausführen, bevor alle Zeilen mit den Entfernungskriterien entfernt werden.
Ich denke, das liegt daran, dass die for-Schleife ihren Index verfehlt, wenn eine Zeile beim Löschen einer Zeile plötzlich verschwindet.
Mein erster Code sieht so aus.
Set StatusRange = Range("B2", Range("B2").End(xlDown))
For Each StatusCell In StatusRange
If StatusCell = "FG" Then
StatusCell.EntireRow.Delete
ElseIf StatusCell = "QC" Then
StatusCell.EntireRow.Delete
ElseIf StatusCell = "CS" Then
StatusCell.EntireRow.Delete
Else
End If
Next StatusCell
Wenn ich versuche, den Bereich jede Schleife zu aktualisieren, es immer noch nicht funktioniert.
Set StatusRange = Range("B2", Range("B2").End(xlDown))
For Each StatusCell In StatusRange
If StatusCell = "FG" Then
StatusCell.EntireRow.Delete
ElseIf StatusCell = "QC" Then
StatusCell.EntireRow.Delete
ElseIf StatusCell = "CS" Then
StatusCell.EntireRow.Delete
Else
End If
Set StatusRange = Range("B2", Range("B2").End(xlDown))
Next StatusCell
Gibt es jemanden, der eine Sloution kennt? Vielen Dank.
Arbeit von teh unten nach oben. Wenn Sie eine Zeile löschen, wird alles und yuou diese Zeile überspringen auf Die nächste Iteration – Jeeped
Dies ist mit ziemlicher Sicherheit eine doppelte Frage, und ich werde sie als solche kennzeichnen, wenn ich das passende Duplikat finde.Wenn Sie Elemente aus einer Sammlung löschen, müssen Sie * von 'Rows.Count zu 1 Step -1 löschen 'sonst überspringen Sie Zeilen –
Gehen Sie weiter und duplex @DavidZemens - Ich habe etwas Wert hinzugefügt, indem Sie die Case-Anweisung für mehrere Vergleiche zeigen, aber das ist immer noch ein Betrogener. – Jeeped