同步数据透视表 – VBA代码不起作用

我目前正在dynamic仪表板上工作。 我在计算表上有几个来自不同来源的数据透视表,但它们具有相同的过滤选项(date,代理名称等)。 我的概述表从这些数据透视表中获取数据。 这个想法是,基于连接到1个枢轴的less数切片机,我可以更新其他数据透视表并在总览表上对结果进行操作。

我已经使用下面的代码来同步过滤选项。 这个代码工作的很好,当我在有透视表的工作表内进行更改时。 但是,如果我将切片器转换到概览表并尝试使用数据进行操作,则只有一个数据透视表在我的计算表上得到更新,因此只有一半的信息出现在概览表上。

该代码在概览和计算表上都被复制。 请帮忙。

Private Sub Worksheet_PivotTableUpdate(ByVal Target As PivotTable) Dim wsMain As Worksheet Dim ws As Worksheet Dim ptMain As PivotTable Dim pt As PivotTable Dim pfMain As PivotField Dim pf As PivotField Dim pi As PivotItem Dim bMI As Boolean On Error Resume Next Set wsMain = ActiveSheet Set ptMain = Target Application.EnableEvents = False Application.ScreenUpdating = False For Each pfMain In ptMain.PageFields bMI = pfMain.EnableMultiplePageItems For Each ws In ThisWorkbook.Sheets("CalculationSheet") For Each pt In ws.PivotTables If ws.Name & "_" & pt <> wsMain.Name & "_" & ptMain Then pt.ManualUpdate = True Set pf = pt.PivotFields(pfMain.Name) bMI = pfMain.EnableMultiplePageItems With pf .ClearAllFilters Select Case bMI Case False .CurrentPage = pfMain.CurrentPage.Value Case True .CurrentPage = "(All)" For Each pi In pfMain.PivotItems .PivotItems(pi.Name).Visible = pi.Visible Next pi .EnableMultiplePageItems = bMI End Select End With bMI = False Set pf = Nothing pt.ManualUpdate = False End If Next pt Next ws Next pfMain Application.EnableEvents = True Application.ScreenUpdating = True End Sub 

我相信这个问题是这样的:

 For Each ws In ThisWorkbook.Sheets("CalculationSheet") 

该行将代码限制为仅考虑名为“CalculationSheet”的工作表上的数据透视表。 如果您希望它在工作簿中的所有工作表上工作,请将其更改为:

 For Each ws In ThisWorkbook.WorkSheets 

…按照http://blog.contextures.com/archives/2012/01/03/change-all-pivot-tables-with-one-selection/中的原始代码列&#x8868;