正如标题所说,如果选择了另一个,我正在尝试禁用或将相反的过滤器默认为“全部”。
例如,我有一个带有两个过滤器的数据透视表 - “WEEK”和“MONTH”
如果有人在周过滤器中选择一个值,我希望月过滤器默认为“(全部)”,反之亦然。
很简单,但我不确定如何攻击这个(VBA 或公式)以及代码。
多谢你们!
正如标题所说,如果选择了另一个,我正在尝试禁用或将相反的过滤器默认为“全部”。
例如,我有一个带有两个过滤器的数据透视表 - “WEEK”和“MONTH”
如果有人在周过滤器中选择一个值,我希望月过滤器默认为“(全部)”,反之亦然。
很简单,但我不确定如何攻击这个(VBA 或公式)以及代码。
多谢你们!
不幸的是,没有任何事件可以跟踪可透视字段的更改。因此我的想法如下。步骤 1. 将公共变量放在某处:
Public tmpM As Boolean
Public tmpW As Boolean
第 2 步。 在放置数据透视表的工作表模块中,输入以下代码:
Private Sub Worksheet_PivotTableUpdate(ByVal Target As PivotTable)
On Error GoTo ErrorHandler
Application.EnableEvents = False
If Target.PivotFields("week").AllItemsVisible = False And tmpW = True Then
Target.PivotFields("month").ClearAllFilters
End If
If Target.PivotFields("month").AllItemsVisible = False And tmpM = True Then
Target.PivotFields("week").ClearAllFilters
End If
tmpM = Target.PivotFields("month").AllItemsVisible
tmpW = Target.PivotFields("week").AllItemsVisible
Application.EnableEvents = True
Exit Sub
ErrorHandler:
Application.EnableEvents = True
End Sub
它适用于我的示例数据。
编辑:上面代码中的错误处理。