我在网上和这里搜索过但找不到符合条例草案和工作的任何东西.我有一些代码可以工作,但因为它删除行时范围的长度发生变化,它没有捕获所有要删除的行,所以我最终运行了几次,这不是很好......所以我'我正在尝试按此线程推荐的AutoFilter方法.
我有一个包含多个列的电子表格,其中一个是"成本".我需要浏览'cost'列(有时可以是第9列,有时是10,因此下面是'find'位)并删除成本为0的任何行...
下面是我到目前为止编写的代码,任何帮助都会非常非常感激!!!!
- 编辑3:已经进行了一些更改代码...新代码如下.
Sub RemoveRows()
Dim cell As Range
Dim lastRow As Long
Dim lastColumn As Integer
Dim criteraColumn As Integer
Dim criteriaRange As Range
lastRow = Cells.Find(What:="*", After:=Range("A1"), LookIn:=xlValues, LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlPrevious).row
lastColumn = Cells.Find(What:="*", After:=Range("A1"), LookIn:=xlValues, LookAt:=xlPart, SearchOrder:=xlByColumns, SearchDirection:=xlPrevious).Column
Rows(1).EntireRow.Select
criteriaColumn = Selection.Find(What:="Cost", After:=ActiveCell, LookIn:= _
xlValues, LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:= _
xlNext, MatchCase:=False, SearchFormat:=False).Column
Set criteriaRange = Range("A1", Cells(lastRow, lastColumn))
criteriaRange.AutoFilter Field:=criteriaColumn, Criteria1:="£0.00"
AutoFilter.Range.Delete
ActiveSheet.AutoFilterMode = False
End Sub
Run Code Online (Sandbox Code Playgroud)
当我运行它时,它将过滤器应用于正确的范围和正确的列.然后我收到错误消息:"运行时错误'424':对象需要"适用于该AutoFilter.Range.Delete行.当我按下"结束"或"调试"并查看电子表格时,过滤器已应用于正确的列并检查了正确的选项(£0.00),但没有返回结果(我知道我需要做在将来出现这种情况时会有一些错误处理,但是现在这个过滤器应该返回至少10行.如果我在电子表格中的过滤器设置上手动按"确定"(不更改它们中的任何一个!),我的10个结果会正确显示,所以我不确定为什么当我以编程方式执行此操作时它们没有出现?
如果需要,很高兴提供电子表格示例,这真让我感到困惑!
电子表格可以在这里找到