【问题标题】:Excel Macro Autofilter and Delete RowsExcel 宏自动筛选和删除行
【发布时间】:2017-12-04 23:19:31
【问题描述】:

我正在尝试使下面的编码正常工作,但出现错误。

编码选择另一个工作表,然后自动过滤一列并删除行。

有问题的行是 .AutoFilter 1, "NoNo"

运行时错误“1004”:Range 类的 AutoFilter 方法失败。

我能得到一些帮助吗?

Private Sub Project()
Worksheets("YesYes").Select
With ActiveSheet
.AutoFilterMode = False
 With Range("y1", Range("y" & Rows.Count).End(xlUp))
    .AutoFilter 1, "*NoNo*"
    On Error Resume Next
    .Offset(1).SpecialCells(12).EntireRow.Delete
End With
.AutoFilterMode = False
End With
End Sub

【问题讨论】:

  • 您是否要删除 y 列中包含“NoNo”的任何行?
  • 为我工作...您确定 y 列中有数据吗?
  • 是的,正在尝试删除 y 列中带有“NoNo”的行。如果按钮与表格在同一个工作表中,则上面的宏有效,但我在另一个工作表中有按钮,这会导致错误。不幸的是,我需要不同工作表中的按钮。

标签: vba excel delete-row autofilter


【解决方案1】:

选择不一定“激活”工作表。而不是:

Worksheets("YesYes").Select
With ActiveSheet

这样做:

Worksheets("YesYes").Activate
With ActiveSheet

【讨论】:

    【解决方案2】:

    99% 的时间使用 SelectActivate 是不必要的。

    改为使用完全限定的对象,在您的情况下使用:

    With Worksheets("YesYes")
    

    并嵌套在下面使用:

    With .Range("y1", .Range("y" & .Rows.Count).End(xlUp))
    

    然后添加其余代码。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-12-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多