我正在执行以下代码,但是错误 - 运行时错误 - 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
答案 0 :(得分: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
答案 1 :(得分:0)
我会尝试第一件事:
Dim I as Long