Dies ist vorgesehen, um durch zwei Spalten zu gehen und zu überprüfen, dass der Wert in der L-Spalte niedriger als ein bestimmter (einzelner) Wert in einer Zelle von einem anderen Blatt ist. Außerdem wird überprüft, ob in der Zelle in derselben Zeile in Spalte M ein "# N/V" -Fehler vorliegt. Wenn dies der Fall ist, wird die gesamte Zeile gelöscht. Der Code unten scheint zu funktionieren, jedoch muss ich die For-Schleife mehrmals ausführen, um alle Zeilen vollständig zu löschen. Meine Vermutung ist, dass wenn eine Zeile gelöscht wird, sie nicht die darunterliegende prüft und weitergeht. Wie kann ich das vermeiden? Jede Hilfe wird geschätzt.Wie verhindert man, dass die Zeilenprüfung übersprungen wird, wenn die vorherige Zeile geprüft und gelöscht wird?
Sub removerows()
Dim wsOut As Worksheet
Dim wsPrev As Worksheet
Dim r As Long
Dim Lastrow As Long
Set wsOut = Worksheets("Output")
Set wsPrev = Worksheets("Previous")
Lastrow = wsOut.UsedRange(wsOut.UsedRange.Cells.Count).Row
For r = 2 To Lastrow
If wsOut.Cells(r, "L").Value < wsPrev.Cells(2, "L").Value And _
Application.WorksheetFunction.IsNA(wsOut.Cells(r, "M").Value) Then
wsOut.Cells(r, "L").EntireRow.Delete
Else
wsOut.Cells(r, "L").Interior.ColorIndex = 20
End If
Next
End Sub
Wenn Sie eine Zeile löschen, werden Sie die nächste Zeile zu der r-ten Position „Förderung“ (die aktuelle Zeile ersetzt), so dass, wenn Sie auf den nächsten r erhöhen, überspringt es natürlich die Zeile, die Sie gerade gestoßen oben. Es sieht auch so aus, als ob Sie unten ein Problem haben, da Lastrow (die Anzahl der Gesamtzeilen) gleich bleibt, obwohl Sie Zeilen gelöscht haben. – vknowles