You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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。

查阅的解决方案及存在的问题

  1. 看到多篇帖子推荐使用SpecialCells方法,但该方法对我无效。
  2. 有一个非表格对象操作的方案可行:
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
  1. 怀疑对象名称使用错误,录制宏得到以下代码:
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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.30 16:40:10