应用AdvancedFilter后,AutoFilter将关闭

时间:2018-01-25 12:37:41

标签: excel vba excel-vba autofilter advanced-filter

假设我的Range("A1", "D13")中有Worksheet("Sheet1")个数据。第一列中的某些数据是重复的,这对于列来说并不是唯一的。现在作为我的第一个动作,我为该范围创建.AutoFilter

Dim Ws As Worksheet
Set Ws = Worksheets("Sheet1")

If Not Ws.AutoFilterMode Then
    Ws.Range("A1", "D13").AutoFilter
End If
MsgBox "AutoFilterMode is " & Ws.AutoFilterMode

当我运行此功能时,我会在我的范围的第一行显示当前显示的下拉箭头,Ws.AutoFilterMode会返回True

现在我决定在我的范围的第一列应用.AdvancedFilter

Range("A1", "A13").AdvancedFilter Action:=xlFilterInPlace, Unique:=True
MsgBox "FilterMode is " & Ws.FilterMode
MsgBox "AutoFilterMode is " & Ws.AutoFilterMode

当我再次启动子程序时,.AdvancedFilter会隐藏数据在范围的第一列中重复的行,这就是Ws.FilterMode返回True的原因,但是我有什么& #39;预计现在.AutoFilter已关闭且Ws.AutoFilterMode返回False

我对此行为的解决方法是在.AutoFilter应用后立即重新创建(启用?)相同的.AdvancedFilter如果您有更好的解决方案我会很高兴听到它,但是我真的要问的是:

  • .Autofilter被破坏或只是关闭(AutoFilterMode=False)并且这两者之间有区别吗?

  • 如何.Autofilter.AdvancedFilter连接以产生此行为?

  • 这是一个有意的设计,如果是,那么收益是多少?如果没有,我是否将其视为一个错误,应用我的解决方法(或者如果存在更好的解决方案)并希望最好?

感谢您抽出时间阅读我的问题并帮助我。

0 个答案:

没有答案