如何修复VBA For Loop中的运行时错误

我正在执行下面的代码,但得到错误 – 运行时错误 – 6 overlfow。

像rowcount接缝正在获得完美的价值,我可以看到,当我去debugging模式。 但之后没有任何事情发生。

有些人可以为我解决这个问题吗?

Private Sub CommandButton1_Click() Dim i As Integer Dim RowCount As Long RowCount = Cells(Rows.Count, "A").End(xlUp).Row For i = RowCount To 2 Step -1 If Cells(i, 4) = "7" Then Rows(i).Delete Shift:=xlUp End If Next i End Sub 

虽然评论和答案暗示你的问题是一个数据types的问题都是技术上是正确的,但有一个更好的方式来处理这个问题, 特别是如果你在一个范围内循环多行。

只需过滤整个范围并删除符合条件的行,而不是循环。

以下代码自动筛选Sheet1,find列D中等于7的所有单元格。它删除这些行,然后closures自动筛选器,留下所需的行。 请注意,通过使用偏移方法,您不会删除第1行,无论它是否有7。

将此代码添加到模块中,然后从button单击调用该模块:

 Sub DeleteRowsThatMatch() Dim ws As Worksheet Dim rng As Range Dim lastRow As Long Dim match As String Set ws = ThisWorkbook.Sheets("Sheet1") lastRow = ws.Range("D" & ws.Rows.Count).End(xlUp).Row match = "7" Set rng = ws.Range("D1:D" & lastRow) ' filter and delete all but header row With rng .AutoFilter field:=1, Criteria1:="=" & match .Offset(1, 0).SpecialCells(xlCellTypeVisible).EntireRow.Delete End With ' turn off the filters ws.AutoFilterMode = False End Sub 

首先我会尝试:

 Dim I as Long