使用VBA在另一张表中自动过滤

时间:2015-07-07 09:36:01

标签: excel vba excel-vba

我打算过滤F列中以314开头的值,并清除其内容(整行)。该工作簿有30,000多行,我认为在另一个工作表(sA)中进行过滤时,循环不是一个好的选择。我在下面记录了以下代码。

Sheets("sA").Select
Selection.AutoFilter
ActiveSheet.Range("$A$1:$AF$30436").AutoFilter Field:=6, Criteria1:="=314*" _
    , Operator:=xlAnd
ActiveCell.Offset(-181, -2).Range("A1:AF30436").Select
ActiveCell.Activate
Selection.ClearContents

运行代码时,会出现运行时错误1004。我想因为ActiveCell,因为我在不同的工作表中运行代码(sB,其中找到了用于在sA中过滤工作表的按钮)。有什么可能解决这个问题?有什么建议吗?

1 个答案:

答案 0 :(得分:0)

这应该有用,

Sub filter()
   Dim ws As Worksheet
   Set ws = Sheets("sheet1")

   ws.Range("$A$1:$AF$30436").AutoFilter Field:=6, Criteria1:="=314*" _
    , Operator:=xlAnd

   Dim LR As Long
   LR = ws.Range("A" & ws.Rows.Count).End(xlUp).Row
   ws.Range("A2:AF" & LR).SpecialCells(xlCellTypeVisible).ClearContents
   ws.AutoFilterMode = False
End Sub