已经阅读了大量关于此的帖子,提出了各种建议,似乎无法解决此错误。
我有一系列代码块,用于在电子表格的第I列中查找各种数据。如果找到该数据,则应删除该行。我想删除除标题行之外的所有内容,因此我的代码块如下(1示例):
Sub Strip()
With Columns("I")
.AutoFilter Field:=1, Criteria1:="=70-79%", VisibleDropDown:=False
.Offset(1, 0).EntireRow.Delete
.AutoFilter
.AutoFilter
End With
End Sub
当我逐步执行此操作并进入Offset行时,它会选择正确的条件,但是当单步执行该行时,我会收到错误:运行时错误1004:应用程序定义的错误或对象定义的错误。
有什么想法吗?
答案 0 :(得分:2)
就像我在评论中提到的那样,您需要将列更改为范围。
尝试此操作(未经测试)
Sub Strip()
Dim ws As Worksheet
Dim lRow As Long
Set ws = Sheet1
With ws
.AutoFilterMode = False
lRow = .Range("I" & .Rows.Count).End(xlUp).Row
Set Rng = .Range("I1:I" & lRow)
With Rng
.AutoFilter Field:=1, Criteria1:="=70-79%", VisibleDropDown:=False
.Offset(1, 0).SpecialCells(xlCellTypeVisible).EntireRow.Delete
End With
.AutoFilterMode = False
End With
End Sub
答案 1 :(得分:1)
With Columns("I") ... .Offset(1, 0).EntireRow.Delete
您无法offset
整列。试试UsedRange.Columns("I")
,或确定包含您的数据但不包含整个列的内容。 UsedRange
需要对某些工作表进行明确限定,因此如果您的代码不在工作表代码模块中,请将其限定为某些显式工作表或ActiveSheet
。
With ActiveSheet.UsedRange.Columns("I")