作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
感谢您来到这个话题。
我拥有的:
-在 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
非常感谢任何和所有的想法!非常感谢!
最佳答案
试试这个:
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
对象启用智能感知,这很有帮助。 (我总是发现各种 Filter
相关的属性和方法令人困惑,尤其是没有自动完成功能。)
关于Excel VBA : How to Unfilter Only One Autofilter Range at a Time? 提供代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17975616/
我是一名优秀的程序员,十分优秀!