VBA - 在if中减少for循环

LWr*_*rig 2 excel vba for-loop if-statement

我正在运行一个宏来清理工作簿中的空行,并且由于For循环的运行方式,它会错过连续的空行,因为它,例如:

  • 检查第14行
  • 删除第14行,因为空白
  • 第15行向上移动成为新的第14行
  • 对于循环移动到第15行,缺少新行14

我的(可能是有缺陷的)解决方案是在删除将for循环递减一步的行之后添加一个步骤,以便它将连续捕获.

我试过了:

For i = 1 To 2000
    If IsEmpty(Cells(i, 6)) = True Then
        Rows(i).EntireRow.Delete
        i = i - 1
    End If
Next i
Run Code Online (Sandbox Code Playgroud)

这似乎无限循环.我也尝试了i - = 1, - i等,但是由于预期的表达而失败了.i = --i atleast运行,但似乎没有工作到删除空行.

有什么建议?如果遗漏了明显的事情,请提前道歉.

Tim*_*son 5

在删除时你应该倒退,所以从2000开始向下工作以确保没有跳过任何行.

For i = 2000 To 1 step -1
    If IsEmpty(Cells(i, 6)) = True Then
        Rows(i).EntireRow.Delete
    End If
Next i
Run Code Online (Sandbox Code Playgroud)