尝试创建具有动态范围

时间:2017-12-15 23:47:52

标签: vba dynamic pivot-table type-mismatch

我想创建一个带有动态范围的数据透视表,该动态范围引用另一个选项卡。在评论“ define pivot cache ”之后,我不断收到“运行时错误'13' - 输入不匹配”。有什么建议吗?

Sub InsertExportPivotTables()

'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

'*************Actions by study
'Insert a New Blank Worksheet for Actions by Study
Application.DisplayAlerts = False
Worksheets("Actions by Study").Delete 'deletes worksheet if already exists
Sheets.Add Before:=ActiveSheet
ActiveSheet.Name = "Actions by Study"
Application.DisplayAlerts = True
Set PSheet = Worksheets("Actions by Study")
Set DSheet = Worksheets("export")

'Define Data Range
LastRow = DSheet.Range("A" & DSheet.Rows.Count).End(xlUp).Row
Set PRange = DSheet.Range(DSheet.Cells(6, 1), DSheet.Cells(LastRow, "U"))

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

'Insert Blank Pivot Table
Set PTable = PCache.CreatePivotTable(TableDestination:=PSheet.Cells(1, 1), _
        TableName:="ActionsbyStudy01", DefaultVersion:=xlPivotTableVersion14)

End Sub

1 个答案:

答案 0 :(得分:0)

您可以传递 PivotCaches.Create 指定范围,但不能传递范围对象。

  

如果 SourceType 不是 xlExternal ,则需要 SourceData 参数。   它应该传递一个范围(当 SourceType xlConsolidation 时   或 xlDatabase )或Excel工作簿连接对象(何时    SourceType xlExternal )。通过Range时,建议使用   使用字符串指定工作簿,工作表和单元格   范围,或设置命名范围并将名称作为字符串传递。

     

传递 Range 对象可能会意外导致“类型不匹配”错误

Source更多信息)