首页 > 解决方案 > 循环不删除所有必需的行

问题描述

我的代码应该计算 WIP 工作表中的行数,然后遍历行并删除一行,如果 B 列中的字符串包含单词“out”。

Sub delete()
    numrows = Worksheets("WIP").Cells(Rows.Count, "A").End(xlUp).Row

    For x = 1 To numrows
        If InStr(1, lCase(Range("B" & x)), "out") <> 0 Then
            Rows(x).Delete
        End If
    Next
End Sub

代码正在运行,没有出现任何错误,但它只删除了一些行。假设 B 列中有 100 行包含单词“out”。我将运行代码一次,它会删除几行。然后我再次运行它,它又摆脱了一些。如果我运行代码足够多次,它将摆脱所有正确的行。

我不确定为什么第一次没有删除所有行,任何帮助将不胜感激。谢谢。

标签: excelvbafor-loop

解决方案


代替:

For x = 1 To numrows

和:

For x = numrows to 1 Step -1

如果向前运行,循环索引会损坏。


推荐阅读