gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 21:01:36 26 4
gpt4 key购买 nike

我目前正在开发一个动态仪表板。我的计算表上有几个数据透视表,它们来自不同的来源,但具有相同的过滤选项(日期、代理名称等)。我的概览表从这些数据透视表中获取数据。这个想法是,基于连接到 1 个数据透视表的少数切片器,我可以更新其他数据透视表并使用概览表上的结果进行操作。

我使用下面的代码来同步过滤选项。当我在有数据透视表的工作表中进行更改时,此代码运行良好。但是,如果我将切片器转换为概览表并尝试使用数据进行操作,则只有 1 个数据透视表会在我的计算表上更新,因此概览表上只会显示一半信息。

该代码被复制到概述和计算表上。请帮忙。

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/ 的原始代码列表

关于vba - 同步数据透视表 - VBA 代码不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35258195/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com