我正在尝试动态检索数据的范围地址,然后更改数据透视表数据源的范围地址。
涉及三张纸。
1)ThisWorkbook.Worksheets(“ sheet1”)-主仪表板,具有从sheet2移出的数据透视图和切片器2)ThisWorkbook.Worksheets(“ sheet2”)-数据透视表3)ThisWorkbook.Worksheets(“ sheet3”)-在以下代码运行之前从其他工作簿复制的源数据。
我的代码给了
运行时错误5:无效的过程调用或参数
错误指向Set pt = Pivot_sht.PivotTables(PivotName).ChangePivotCache(pc)
我的主表上还有另外两个数据透视图。使用相同的代码,它们可以毫无问题地刷新。
完整代码:
Option Explicit
Sub test()
Dim daMa As Worksheet
Dim daPerf As Worksheet
Dim LastRow As Long
Dim LastCol As Long
Dim Data_sht As Worksheet
Dim Pivot_sht As Worksheet
Dim DataRange As Range
Dim PivotName As String
Dim NewRangePH As String
Dim pt As PivotTable
Dim pc As PivotCache
'REFRESHING PERFORMANCE HISTORY
'Set Variables Equal to Data Sheet and Pivot Sheet
Set Data_sht = ThisWorkbook.Worksheets("sheet3")
Set Pivot_sht = ThisWorkbook.Worksheets("sheet2")
'Enter in Pivot Table Name
PivotName = "PHPivot"
With Data_sht
.Activate
'Dynamically Retrieve Range Address of Data
LastRow = .Cells(.Rows.Count, "G").End(xlUp).Row
LastCol = 12
Set DataRange = Data_sht.Range(Cells(LastRow, 1).Address, Cells(1, LastCol).Address)
End With
NewRangePH = Data_sht.Name & "!" & _
DataRange.Address(ReferenceStyle:=xlR1C1)
'Make sure every column in data set has a heading and is not blank (error prevention)
If WorksheetFunction.CountBlank(DataRange.Rows(1)) > 0 Then
MsgBox "One of your data columns has a blank heading." & vbNewLine _
& "Please fix and re-run!.", vbCritical, "Column Heading Missing!"
Exit Sub
End If
'Change Pivot Table Data Source Range Address
Set pc = ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:=NewRangePH)
Set pt = Pivot_sht.PivotTables(PivotName).ChangePivotCache(pc)
End Sub
我在发布此问题之前搜索了许多Google结果和Stack Overflow的结果,并尝试了至少10种不同的方法。
“ set pt =”已磨损,您不想设置新的数据透视表。改为使用
Pivot_sht.PivotTables(PivotName).ChangePivotCache ActiveWorkbook. _
PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _
newRangePH, Version:=xlPivotTableVersion15)