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

标签 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

非常感谢任何和所有的想法!非常感谢!

最佳答案

试试这个:

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/

相关文章:

excel - 使用 VBA 根据枢轴钻头重命名工作表名称

.net - 知道为什么 excel interop 将许多小数读取为 -2146826246 吗?

从具有不同数量工作表的电子表格中读取

vba - Outlook 中的用户窗体定位

vba - Excel 2003 - 如何构建我自己的 XLA?

excel - 与区域设置之间的转换行为不一致

excel - 使用 Excel vba 下载 YouTube 字幕

excel - 如何自动过滤具有来自特定范围的值的列

excel - VBA 中的自动筛选

arrays - 无法根据 VBA 中另一个工作表中的值的数组过滤掉一个工作表上的行