我在工作簿中有2个数据透视表,我有以下代码来动态更改数据源并刷新数据透视表。代码运行良好,因为它循环遍历第一个循环并刷新第一个数据透视表。然而,当循环第二透视表,代码崩溃在pt.ChangePitvotCache
一个错误:运行时错误'5':无效的porcedure调用或参数
Run-time error = '5': invalid procedure call or argument"
有谁能够尽快我有超过1 Pivot-帮助为什么这不工作代码中的表?
Dim ws As Worksheet
Dim pvtCache As PivotCache
Dim pt As PivotTable
Dim newRange As String
Set DataSource = DataSht.Range("A1", DataSht.Range("A1").End(xlToRight).End(xlDown))
newRange = DataSht.Name & "!" & DataSource.Address(ReferenceStyle:=xlR1C1)
Set pvtCache = ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:=newRange)
For Each ws In ActiveWorkbook.Worksheets
For Each pt In ws.PivotTables
pt.ChangePivotCache pvtCache
pt.RefreshTable
Next pt
Next ws
感谢Shai,您的建议很有效,但只有在第二个PT不与第一个PT共享PivotCache的情况下。我现在在一张新纸上添加了一个克隆的PT,现在代码在第一个For Each pt在ws.PivotTables循环中给出了这个错误... – Mike
实际上它也适用于这种情况,你是否先删除set pvtCache循环? –
我在循环之前删除了pvtCache,但仍然收到相同的错误。我已经设法缩小了这个问题的范围,看起来只有当连接到克隆的数据透视表的切片器出现问题时 – Mike