删除范围并在多个选项卡中创build自动filter

我想写一个macros,它将创buildAutoFilter(如果不存在),删除filter并删除我的工作簿中某些选项卡中的特定范围。

我创build了这个代码,但不知何故,它不工作 – 数据gis只从一个选项卡,而不是所有没有列出的If语句中删除。 请帮忙!

Sub ClearTabs() Dim rng As Range Dim ws As Worksheet Set rng = Range("B9:AK100") For Each ws In ThisWorkbook.Sheets If ws.Name <> "lastfile" And ws.Name <> "Sheet1" And ws.Name <> "Sheet2" Then If Not ws.AutoFilterMode Then ws.Range("B8:AK8").AutoFilter End If ws.AutoFilter.ShowAllData rng.ClearContents End If Next ws End Sub 

按照上面的注释,您需要For Each ws In ThisWorkbook.Sheets循环中设置Range( Set rng = Range("B9:AK100") )。

代码

 Sub ClearTabs() Dim rng As Range Dim ws As Worksheet For Each ws In ThisWorkbook.Sheets With ws Select Case .Name Case "lastfile", "Sheet1", "Sheet2" ' do nothing Case Else Set rng = .Range("B9:AK100") If Not .AutoFilterMode Then .Range("B8:AK8").AutoFilter End If .AutoFilter.ShowAllData rng.ClearContents End Select End With Next ws End Sub 

你可以避免调rng和设置rng并像这样走

 Option Explicit Sub ClearTabs() Dim ws As Worksheet For Each ws In ThisWorkbook.Sheets With ws If .Name <> "lastfile" And .Name <> "Sheet1" And .Name <> "Sheet2" Then If .AutoFilterMode Then .AutoFilter.ShowAllData Else .Range("B8:AK8").AutoFilter End If .Range("B9:AK100").ClearContents End If End With Next End Sub