感谢您加入此主题。
我有什么:
- 在行A:G
上使用自动过滤器的报告我需要什么:
- 如果特定列上有过滤器,则不对特定列进行过滤的实际代码。
- 在下面运行我的代码,不会过滤整个范围的A:G。
- 在这种情况下,我只希望“F”未经过滤,如果过滤则只留下任何其他过滤器。
With Sheets("DATA")
If .Range("F1").AutoFilter = True Then
ActiveSheet.Range("$A$1:$G$59826").AutoFilter Field:=6
Else
End If
End With
非常感谢任何和所有想法!非常感谢你!
答案 0 :(得分:7)
试试这个:
Sub UnFilter()
Dim ws As Excel.Worksheet
Set ws = Worksheets("DATA")
With ws
If .AutoFilterMode = True Then
If Not Intersect(.AutoFilter.Range, .Range("G1")) Is Nothing Then
.Range("$A$1:$G$59826").AutoFilter Field:=.Range("G:G").Column
End If
End If
End With
End Sub
代码中的这一行:
If .Range("F1").AutoFilter = True
...实际上关闭了整张纸的过滤。相反,我的代码会检查是否使用以下内容过滤工作表:
If .AutoFilterMode = True Then
然后检查过滤器是否包含G列:
If Not Intersect(.AutoFilter.Range, .Range("G1")) Is Nothing Then
我做了一些更改,使您的代码更灵活一些。它还为ws
对象启用Intellisense,这很有帮助。 (我总是发现各种与Filter
相关的属性和方法令人困惑,特别是没有自动完成。)
答案 1 :(得分:1)
这对我有用
Sub UnfilterColumn()
With Worksheets("DATA")
If Not Worksheets("DATA").AutoFilter Is Nothing Then
ThisWorkbook.Sheets("DATA").Range("A1").AutoFilter Field:=6
End If
End With
End Sub
答案 2 :(得分:0)
我刚刚在模块中输入了下面的简单代码,它对我来说很好。您需要更改数据范围和字段以匹配您的数据。我用A到M列中的数据清除过滤器。字段8是H列。
ActiveSheet.Range("$A:$M").AutoFilter Field:=8