VBA操作表格筛选行时触发Run-time Error 424(Object Required)求助
Excel VBA宏筛选删除表格行报错问题
我正在编写一个宏,旨在导入数据并生成清理后的表格。导入完成后创建了表格,尝试筛选删除无关行,最终只保留“Logged”项。
筛选功能可正常工作,代码如下:
ActiveSheet.ListObjects("Table4").Range.AutoFilter Field:=10, Operator:=xlFilterValues, _ Criteria1:=Array("Cancelled", "Done", "On Hold", "PreReg")
分步运行时能看到筛选结果正确,但执行删除操作时出现问题。
尝试过的操作及错误
- 使用
.SpecialCells(xlCellTypeVisible).Delete、.SpecialCells(xlCellTypeVisible).EntireRow.Delete,或是先Select再通过With Selection执行删除,几乎都会触发Run-time Error 424: Object Required。
查阅的解决方案及存在的问题
- 看到多篇帖子推荐使用SpecialCells方法,但该方法对我无效。
- 有一个非表格对象操作的方案可行:
ActiveSheet.AutoFilter.Range.Offset(1,0).Rows.SpecialCells(xlCellTypeVisible).Delete(xlShiftUp)
但我希望以表格对象操作,尝试按微软文档的说明修改写法后,仍触发相同错误,错误写法如下:
ActiveSheet.ListObjects("Table4").Range.AutoFilter Field:=10, Operator:=xlFilterValues, _ Criteria1:=Array("Cancelled", "Done", "On Hold", "PreReg").Rows
- 怀疑对象名称使用错误,录制宏得到以下代码:
Table4.Range.AutoFilter Field:=10, _ Criteria1:=Array("Cancelled", "Done", "On Hold", "PreReg"), Operator _ :=xlFilterValues Range("Table4").Select Selection.EntireRow.Delete ' **** This line does not seem right!!! Table4.Range.AutoFilter Field:=10
但该方案存在两个问题:
- 问题1:部分行被卡住并隐藏,即使中断代码分步运行,也无法重新筛选显示“Logged”项。
- 问题2:有时会彻底删除数据,仅保留表头,行3被隐藏,其余工作表为空。
请问我忽略了什么?
内容的提问来源于stack exchange,提问作者SoFar67
相关产品推荐
相关产品推荐

