Nic*_*llo 7 excel vba autofilter
谢谢你来到这个主题.
是)我有的:
- 在行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
Run Code Online (Sandbox Code Playgroud)
任何和所有的想法都非常感谢!非常感谢!
试试这个:
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
Run Code Online (Sandbox Code Playgroud)
代码中的这一行:
If .Range("F1").AutoFilter = True
Run Code Online (Sandbox Code Playgroud)
...实际上关闭了整张纸的过滤.而是我的代码检查工作表是否过滤了:
If .AutoFilterMode = True Then
Run Code Online (Sandbox Code Playgroud)
然后检查过滤器是否包含G列:
If Not Intersect(.AutoFilter.Range, .Range("G1")) Is Nothing Then
Run Code Online (Sandbox Code Playgroud)
我做了一些更改,使您的代码更灵活一些.它还为ws对象启用了Intellisense ,这很有帮助.(我总是发现各种Filter相关的属性和方法令人困惑,特别是没有自动完成.)