2011-09-06 42 views

回答

3

我认为最简单的方法是删除自动过滤和感谢重新将其应用到这种VBA代码的(你也许可以使其适应VSTO):

Dim w As Worksheet 
Dim filterArray() 
Dim currentFiltRange As String 

Sub ChangeFilters() 

Set w = Worksheets("Crew") 
With w.AutoFilter 
    currentFiltRange = .Range.Address 
    With .Filters 
     ReDim filterArray(1 To .Count, 1 To 3) 
     For f = 1 To .Count 
      With .Item(f) 
       If .On Then 
        filterArray(f, 1) = .Criteria1 
        If .Operator Then 
         filterArray(f, 2) = .Operator 
         filterArray(f, 3) = .Criteria2 
        End If 
       End If 
      End With 
     Next 
    End With 
End With 

w.AutoFilterMode = False 
w.Range("A1").AutoFilter field:=1, Criteria1:="S" 

End Sub 

代码发现on MSDN

[编辑]您还可以找到在此线程一些有价值的信息:Reordering Excel Table Columns with Filters Intact(看评论)

0

当树视图在一个日期字段,然后其标准不能确定的过滤器使用。这就是为什么您需要临时自定义视图来重新应用过滤器。见this post

相关问题