gpt4 book ai didi

Excel VBA : How to Unfilter Only One Autofilter Range at a Time? 提供代码

转载 作者:行者123 更新时间:2023-12-02 01:28:15 24 4
gpt4 key购买 nike

感谢您来到这个话题。

我拥有的:

-在 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com