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

如何修复VBA For循环中的运行时错误,vba,excel,excel-2007,Vba,Excel,Excel 2007,我正在执行以下代码,但得到错误-运行时错误-6 overlfow. rowcount这样的接缝得到了完美的值,我可以在进入调试模式时看到这一点。但之后什么也没发生 能帮我解决这个问题吗 Private Sub CommandButton1_Click() Dim i As Integer Dim RowCount As Long RowCount = Cells(Rows.Count, "A").End(xlUp).Row Fo

我正在执行以下代码,但得到错误-运行时错误-6 overlfow.

rowcount这样的接缝得到了完美的值,我可以在进入调试模式时看到这一点。但之后什么也没发生

能帮我解决这个问题吗

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

我要尝试的第一件事是:

Dim I as Long

虽然提示您的问题是数据类型问题的注释和回答在技术上都是正确的,但是有一种更好的方法来处理这个问题,尤其是当您在一个包含那么多行的范围内循环时

不要循环,只需过滤整个范围并删除任何符合条件的行

下面的代码自动筛选Sheet1,查找D列中任何等于7的单元格。它删除这些行,然后关闭自动筛选,保留所需的行。请注意,通过使用偏移量方法,无论第1行是否包含7,都不会删除该行

将此代码添加到模块,然后从您的按钮调用该模块,单击:

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

错误发生在哪里?您迭代了多少行?如果超过32768,那就是问题所在。i是一个整数,不能保存高于该值的值。如果是这样的话,我希望你能离开。