excel - 循环不删除所有必需的行

标签 excel vba for-loop

我的代码应该计算 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”。我将运行代码一次,它会删除几行。然后我再次运行它,它又摆脱了一些。如果我运行代码足够多次,它将摆脱所有正确的行。
我不确定为什么第一次没有删除所有行,任何帮助将不胜感激。谢谢。

最佳答案

代替:

For x = 1 To numrows

和:
For x = numrows to 1 Step -1

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

关于excel - 循环不删除所有必需的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55244146/

相关文章:

python - 如何访问 openpyxl 中的单元格值

com - 使用 Powershell 将 Excel 工作表从一个工作簿复制到另一个工作簿

excel - 复制粘贴图表 Excel VBA

javascript - Sprite 动画: function not recognized and semi-colon expected in for-loop

java - For 循环检查文件是否存在以及是否不创建文件

excel - 可拖动的间接 Excel

sql - 在 Excel 中复制 SQL 数据和粘贴时格式化

vba - 如何在 VBA 中将 Excel 变量从宏传递到 Word 宏

excel - 加快将数据从一张纸复制到另一张纸的速度

javascript - 如何在 ng-repeat 中为变量设置类