這是爲了遍歷兩列並確認L列中的值低於另一個工作表中單元格中的特定(單個)值。它還檢查列M中同一行的單元格中是否存在「#N/A」錯誤。如果這些錯誤是真的,那麼將刪除整行。下面的代碼似乎工作,但是,我必須多次運行For循環才能完全刪除所有行。我的直覺是,當一行被刪除時,它不會檢查它下面的一行,並繼續前進。我怎樣才能避免這種情況?任何幫助表示讚賞。如何防止在檢查並刪除前一行時跳過行檢查?
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
當你刪除一行時,你是「推動」下一行到第r位置(替換當前行),所以當你增加到下一個r時,它自然會跳過你碰到的行向上。它看起來好像在底部會出現問題,因爲即使刪除了行,Lastrow(總行數)也保持不變。 – vknowles