【问题标题】:Trying to create pivot table vba with dynamic range尝试创建具有动态范围的数据透视表 vba
【发布时间】:2018-05-30 04:31:16
【问题描述】:

我想创建一个具有引用另一个选项卡的动态范围的数据透视表。在评论“define pivot cache”之后,我不断收到“Run-time error '13' - Type mismatch”。有什么建议吗?

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

【问题讨论】:

  • 哎呀,我现在不能编辑它,但 SourceData 应该设置为 PRange。我在这种情况下使用了实际地址,它似乎有效。
  • 你必须告诉我们错误是什么,请更新问题。
  • 对不起,错误是运行时错误'13': type mismatch
  • 哪里出错了?
  • set PCache语句出现错误

标签: vba dynamic pivot-table type-mismatch


【解决方案1】:

您可以传递 PivotCaches.Create 命名范围,但不能传递 Range 对象。

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

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

(更多信息Source

【讨论】:

  • 我将如何将命名范围作为字符串传递?
  • 我认为:ActiveWorkbook.Names("yourRangeName").RefersToRange
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-02-16
  • 2021-07-05
  • 1970-01-01
  • 1970-01-01
  • 2021-05-27
  • 1970-01-01
相关资源
最近更新 更多