【发布时间】:2015-08-27 10:14:13
【问题描述】:
感谢您对此的任何意见。我正在尝试制作一个简单的数据透视表,它从工作表“5 月 15 日趋势”中获取数据,并将其放入名为“关键性错误 - 数据透视”的数据透视表上。
当我尝试使用 create 方法设置数据透视缓存范围时,它会返回类型不匹配的运行时错误。我检查了参数,看起来我设置正确。我确实尝试指定数据透视表版本,但仍然遇到同样的错误。我的代码如下。
我假设这与 pvtCache 变量或我将其设置为范围的方式有关,但我无法找出任何解决方案。
Sub PivotTableCode()
Dim pvtCache As PivotCache
Dim pvt As PivotTable
Dim pf As PivotField
Dim pi As PivotItem
'Set the cache of the pivot table
Sheets("5 Month Trending May 15").Select
Set pvtCache = ActiveWorkbook.PivotCaches.Create(xlDatabase, Range("A2:H38"))
'create the Pivot Table
Sheets("Errors by Criticality - Pivot").Select
Set pvt = ActiveSheet.PivotTables.Add(pvtCache, Range("AP2"), "MyPivotTable")
End Sub
【问题讨论】:
-
这段代码在哪里?在
Worksheet或ThisWorkbook或模块内?对Range的非限定调用会根据代码的执行位置而有所不同(主要问题在Worksheet内部)。您可以使用Application.Range而不是Range来测试该问题。另外,您可以手动创建数据透视表吗?这与错误的标题名称、空白标题等没有问题吗? -
感谢拜伦的回复!我上面的代码在一个模块内。我将代码输入到
"5 Month Trending"代码空间中,但我仍然遇到同样的错误。我可以自己手动制作数据透视表。只是由于某种原因没有正确设置缓存。 -
尝试将
Range("A2:H38")提供为具有完整范围和工作表名称的String:"'Sheet Name'!A2:H38"'. Pivot Cache is supposed to be able to take aRange`,但ActiveSheet和您期望的工作表之间可能存在脱节或其他一些范围相关的问题。 -
太棒了!将其更改为
String为"'5 Month Trending May 15'!A2:H38"正确设置缓存。感谢大家的帮助! -
只是好奇,你也可以试试:
Worksheets("5 Month Trending May 15").Range("A2:H38")?如果可行,则意味着您对Range的调用不在适当的上下文中,这很奇怪,因为您在上面紧接Select,但谁知道呢。如果它不起作用,那么 Range 存在一些问题,我无法真正解释。
标签: excel runtime-error pivot-table vba