0

我正在执行以下代码,但出现错误 - 运行时错误 - 6 溢出。

像 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
4

2 回答 2

2

虽然建议您的问题是数据类型问题的评论和答案在技术上都是正确的,但有一种更好的方法来处理这个问题,尤其是当您循环遍历具有这么多行的范围时。

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

以下代码自动筛选 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
于 2013-09-06T03:48:16.177 回答
0

我会尝试的第一件事:

Dim I as Long
于 2013-09-06T02:46:00.503 回答