假设我的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
连接以产生此行为?
这是一个有意的设计,如果是,那么收益是多少?如果没有,我是否将其视为一个错误,应用我的解决方法(或者如果存在更好的解决方案)并希望最好?
感谢您抽出时间阅读我的问题并帮助我。