用于检测自动过滤器的 If 语句,即使没有过滤任何内容

问题描述 投票:0回答:2

我已经对此进行了搜索,但还没有找到任何东西。为了澄清这一点,我正在寻找一个简单的 if 语句,用于在不存在自动过滤器的情况下应用自动过滤器,或者如果已经存在自动过滤器,则不执行任何操作。

我认为解决方案是:

If ActiveSheet.FilterMode = False Then
    Selection.AutoFilter
end if

但这仅检测过滤后的数据。如果过滤器已经就位并且您执行此行...

Selection.AutoFilter

过滤器消失了,我的代码遇到了糟糕的一天。有没有简单的解决办法?

vba excel excel-2007
2个回答
11
投票

你很接近:

If ActiveSheet.AutoFilterMode = False Then Selection.AutoFilter

0
投票

.AutoFilterMode
.FilterMode
之间有区别。

如果工作表上当前显示自动筛选下拉箭头,则

.AutoFilterMode
变为 True。

仅当使用下拉箭头创建过滤器后,

.FilterMode
才变为 True。

因此

.AutoFilterMode
必须在
.FilterMode
之前变为真。

© www.soinside.com 2019 - 2024. All rights reserved.