删除过滤的行时收到错误1004?

时间:2018-07-11 16:46:23

标签: excel vba filter

我试图在对表示项目是否为“仅限供应商”的列进行过滤之后删除行(是/否)。

我想删除该列下的值为“是”的所有行。但是,当我选择要删除的可见行时遇到错误。

我之前在其他宏中使用了相同的代码,但是这次没有用。

Dim VisibleCell As Long 'Variable to count the number of visible cells after filtering

VisibleCell = Application.WorksheetFunction.Subtotal(3, Range("A3:A50000"))
Range("Table1").Select

'Filter and remove all Vendor Only items
Rows("2:2").Select 'Find column for Vendor Only and filter for Yes values
    Cells.Find(What:="Vendor Item?", After:=ActiveCell, LookIn:=xlFormulas, _
    LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
    MatchCase:=False, SearchFormat:=False).Activate

MyCol = ActiveCell.Column
ActiveSheet.ListObjects("Table1").Range.AutoFilter Field:=MyCol, Criteria1:= _
    "Yes", Operator:=xlAnd
VisibleCell = Application.WorksheetFunction.Subtotal(3, Range("A3:A50000"))

If VisibleCell > 0 Then
    Range("A3:A2000").SpecialCells(xlCellTypeVisible).Select
    Selection.EntireRow.Delete 'Error occurs here
End If

1 个答案:

答案 0 :(得分:0)

由于您拥有ListObject,因此可以通过其标题(“供应商商品?”)引用ListColumn,而不用Find引用第2行中的单元格。

此外,当您要过滤时,我会引用该Index的{​​{1}},而不是它的ListColumnColumn返回其在表中的列号,而Index将返回其在工作表中的列。如果您的表格从A列开始(这听起来像是这里的情况),则两者会重合,但是如果表格的位置发生变化,Column会更健壮。

最后,不需要IndexActivate

Select