我试图在对表示项目是否为“仅限供应商”的列进行过滤之后删除行(是/否)。
我想删除该列下的值为“是”的所有行。但是,当我选择要删除的可见行时遇到错误。
我之前在其他宏中使用了相同的代码,但是这次没有用。
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
答案 0 :(得分:0)
由于您拥有ListObject
,因此可以通过其标题(“供应商商品?”)引用ListColumn
,而不用Find
引用第2行中的单元格。
此外,当您要过滤时,我会引用该Index
的{{1}},而不是它的ListColumn
。 Column
返回其在表中的列号,而Index
将返回其在工作表中的列。如果您的表格从A列开始(这听起来像是这里的情况),则两者会重合,但是如果表格的位置发生变化,Column
会更健壮。
最后,不需要Index
或Activate
。
Select