首页 > 解决方案 > 如何在 VBA 的 for 循环中使用 If 语句?

问题描述

在 D 列中,我试图删除其中包含值的每一行。如果单元格为空白,则不会被删除

For 循环只查看 D2 并删除整行,因为它有一个值。然后循环停止,不再继续。NumRows 值为 9324,因为 A 列中有那么多行。

我被卡住了,无法弄清楚如何让循环继续。谢谢!

Dim VarDeleteLoop as long
Dim NumRows As Long


NumRows = Worksheets("Sheet").Cells(Application.Rows.Count, "A").End(xlUp).Row


For VarDeleteLoop = 2 To NumRows

        Cells(VarDeleteLoop, 4).Select

        If Cells(VarDeleteLoop, 4).Value = "" Then
                Cells(VarDeleteLoop, 4).Select
        Else
                Cells(VarDeleteLoop, 4).Select
                Selection.EntireRow.Delete
        End If

Next VarDeleteLoop

标签: vbaexcel

解决方案


移除东西时,最好倒着做。这样,如果上一行被删除,您就不需要跟踪下一行的编号。

像这样做你的for循环:

For VarDeleteLoop = NumRows To 2 Step -1

推荐阅读