我在网上和这里搜索过,但找不到任何似乎符合要求和工作的东西。我有一些有效的代码,但是因为范围的长度在删除行时会发生变化,因此它不会捕获所有要删除的行,所以我最终运行了几次,这不是很好......所以我m 现在尝试此线程上推荐的 AutoFilter 方法。
我有一个包含几列的电子表格,其中之一是“成本”。我需要遍历“成本”列(有时可能是第 9 列,有时是第 10 列,因此下面的“查找”位)并删除成本为 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
当我运行它时,它将过滤器应用于正确的范围和正确的列。然后我收到错误消息:“运行时错误'424':需要对象”,适用于该AutoFilter.Range.Delete
行。当我按下“结束”或“调试”并查看电子表格时,过滤器已应用于正确的列并检查了正确的选项(0.00 英镑),但没有返回任何结果(我知道我需要做将来出现这种情况时会进行一些错误处理,但目前该过滤器应该至少返回 10 行)。如果我在电子表格中的过滤器设置上手动按“确定”(不更改任何设置!)我的 10 个结果会正确显示,所以我不确定为什么当我以编程方式执行此操作时它们没有显示?
如果需要,很高兴提供电子表格示例,这真的让我很困惑!
电子表格可以在这里找到