Dim lo as listobject
'Show all data
lo.AutoFilter.ShowAllData
'Set new filter
lo.Range.AutoFilter Field:="X", Criteria1:=vFilterCriteria, Operator:=xlFilterValues
以上两行都有效。如果我删除.Range
,则第二行不起作用。但上述内容并不要求我写.Range
。为什么案件不同?
答案 0 :(得分:2)
它只是对象模型的工作方式。
在引入表(ListObjects)之前,您只能将一个自动过滤器应用于工作表。您使用Range对象的Autofilter方法应用它 - 可能与您应用高级过滤器的方式一致,并且可能与旧的XLM FILTER命令一致。
Worksheet的Autofilter属性返回了Autofilter对象,该对象允许您清除过滤器的过滤器或 test 属性,但不能更改它们。 (工作表也有一个ShowAllData方法,因为你可以使用高级过滤器和自动过滤器)
我只能推测,当引入Tables(listobjects)时,简单地将同一个Autofilter对象实现为表的属性更容易。
答案 1 :(得分:0)
与此历史记录相关的其他奇数-如果您的活动单元格或选择位于具有活动过滤器的ListObject表中,则activeworksheet.filtermode = true;如果在表外,则activeworksheet.filtermode = false。普通的过滤范围不会发生这种输入/输出差异