VBA For Next循环不起作用的问题

我试图用过去对我有用的一段代码来解决问题,现在在其他应用程序中现在无法使用。基本上,它需要删除特定列中包含信息的所有行,其余部分保持不变。当我运行宏时,代码执行没有问题,只是删除了一些带有值的行,而不是全部。当连续运行几次代码时,最终会达到预期的目的,但这确实不方便。这是代码:

Sub Delete_Signoffed()

Dim rCell As Range
Dim iCol As Integer
Dim iRow As Integer


Worksheets("MilestoneDueDate").Activate
If ActiveSheet.AutoFilterMode Then Cells.AutoFilter
ActiveWindow.FreezePanes = False
Columns.EntireColumn.Hidden = False

If WorksheetFunction.CountA(Columns("A")) = 0 Then
    Columns("A").Delete
    Rows("1:6").Delete
End If

iCol = Cells.Find("Sign-Off By", LookAt:=xlWhole).Column

For iRow = 2 To Cells(Rows.Count, iCol).End(xlUp).Row
    Cells(iRow, iCol).Select
    If Not IsEmpty(Cells(iRow, iCol).Value) Then Rows(iRow).EntireRow.Delete
Next iRow

End Sub

源文件存在一些格式问题,在为iCol分配列值之前,所有操作都是为了修复格式,因此请忽略。 iRow从2开始,以避免删除文件头。

关于为什么For循环未按预期工作的任何想法?

提前致谢!

评论