我已经对此进行了搜索,但还没有找到任何东西。为了澄清这一点,我正在寻找一个简单的 if 语句,用于在不存在自动过滤器的情况下应用自动过滤器,或者如果已经存在自动过滤器,则不执行任何操作。
我认为解决方案是:
If ActiveSheet.FilterMode = False Then
Selection.AutoFilter
end if
但这仅检测过滤后的数据。如果过滤器已经就位并且您执行此行...
Selection.AutoFilter
过滤器消失了,我的代码遇到了糟糕的一天。有没有简单的解决办法?
你很接近:
If ActiveSheet.AutoFilterMode = False Then Selection.AutoFilter
.AutoFilterMode
和 .FilterMode
之间有区别。
如果工作表上当前显示自动筛选下拉箭头,则 .AutoFilterMode
变为 True。
仅当使用下拉箭头创建过滤器后,.FilterMode
才变为 True。
因此
.AutoFilterMode
必须在 .FilterMode
之前变为真。