运行时错误'5'使用VBA定义数据透视表时无效的过程调用或参数

时间:2018-05-31 15:30:50

标签: excel vba excel-vba

我在代码中定义PivotCache时发现此问题“运行时错误'5'无效的过程调用或参数”。我使用的Excel是2016 MSO(16.0.4266.1001)32位。 VBA 7。

'Declare Variables
Dim PSheet As Worksheet
Dim DSheet As Worksheet
Dim PCache As PivotCache
Dim PTable As PivotTable
Dim PRange As Range
Dim LastRow As Long
Dim LastCol As Long

'Sort Age of Case
LastRow = Cells(Rows.Count, 2).End(xlUp).Row
Range("M" & LastRow).Sort Key1:=Range("M3:M" & LastRow), _
   Order1:=xlAscending, Header:=xlYes

'Insert a New Blank Worksheet
On Error Resume Next

Application.DisplayAlerts = False
Worksheets.Add(After:=Worksheets(1)).Name = "US MASTER"
Application.DisplayAlerts = True

Set PSheet = Worksheets("US MASTER")
Set DSheet = Worksheets("US Master Macro")

'Define Data Range
LastRow = DSheet.Cells(Rows.Count, 1).End(xlUp).Row

'
'Pivot Table 1
'

'Define Pivot Cache
Set PCache = ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:=PRange)

'Insert Blank Pivot Table
Set PTable = PCache.CreatePivotTable _
(TableDestination:=PSheet.Range("B3"), TableName:="Total Backlog")

2 个答案:

答案 0 :(得分:1)

创建PivotCache时,MSDN建议使用String引用来指定SourceData的工作簿,工作表和单元格范围,而不是传递Range对象。

您可以使用R1C1表示法,而不是使用PRange(您已经忘记了Set),而不是this answer建议。

LastRow = DSheet.Cells(Rows.Count, 1).End(xlUp).Row
LastCol = DSheet.Cells(1, Columns.Count).End(xlToLeft).Column

... SourceData:="'US Master Macro'!R1C1:R" & LastRow & "C" & LastCol

答案 1 :(得分:0)

仅在万一有人遇到类似问题且上述答案无法解决的情况下,如果您使用的切片器连接到各种枢轴(所有枢轴都来自同一数据源),那么除非您没有使用ChangePivotCache,否则首先从切片机上断开枢轴。 经过几天的问题/答案搜索,终于遇到了问题!