Excel 2013 VBA:从活动列中删除活动筛选器(不是所有活动筛选器)

时间:2014-07-28 16:17:58

标签: excel-vba filter excel-2013 vba excel

我能够根据当前选择的单元格(值)激活过滤器:

Application.CommandBars("Cell").FindControl(id:=12232, Recursive:=True).Execute

这很有效,我可以在同一个工作表中多次使用它。但是,我没有看到为当前所选列(活动单元格)停用此过滤器的方法,而不会禁用所有当前已过滤的列。

我们说我有三个有效过滤器(列A,B和C)。我想从当前选定的单元格/列中禁用活动过滤器。如果我的活动单元格在col A中并且我运行宏,则只有col A中的过滤器将被设置为非活动状态,而来自列B和C的过滤器仍然有效且处于活动状态。

PS:这是Excel 2003中的一行代码,Excel 2007中有几行,但它不能与Excel 2013一起运行。

1 个答案:

答案 0 :(得分:0)

这可能有效:

Dim rowcol As Long
Dim myRange As Range

Set myRange = ActiveCell.CurrentRegion

If Not Intersect(ActiveCell, myRange) Is Nothing Then
    rowcol = Intersect(ActiveCell, myRange).Column - myRange.Column + 1
    myRange.AutoFilter Field:=rowcol
End If