【发布时间】:2017-05-23 18:00:17
【问题描述】:
我有一个宏,它之前重置了两个数据透视表的缓存,没有任何错误。我遇到了只有 1 个表的运行时错误 13 类型不匹配,我不明白为什么它突然不起作用。当两个表的代码相同时,也只适用于一个表。
Sub refresh_caches()
Dim cpt As PivotTable, chpt As PivotTable
Set ca2 = Sheets("claim edit").Range("A2")
Set cha2 = Sheets("chrg review").Range("A2")
Set cpc = Range(ca2.End(xlToRight), ca2.End(xlDown))
Set chpc = Range(cha2.End(xlToRight), cha2.End(xlDown))
Set cpt = Sheets("Formulas & Pivots").PivotTables("ptClaim")
Set chpt = Sheets("Formulas & Pivots").PivotTables("ptCharge")
cpt.ChangePivotCache ActiveWorkbook. _
PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _
cpc, Version:=xlPivotTableVersion15)
chpt.ChangePivotCache ActiveWorkbook. _
PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _
chpc, Version:=xlPivotTableVersion15)
For Each PivotCache In ActiveWorkbook.PivotCaches
PivotCache.Refresh
Next
End Sub
changepivotcache 代码出现运行时错误。当我单步执行并跳到chpt 的第二个代码时,它会很好地更新该表。
任何帮助将不胜感激。
编辑 刷新数据源(即数据连接)后出现错误。即使将范围直接引用为sourcedata,我也会遇到相同的错误。虽然如果我手动更改数据源,数据透视表会更新得很好。
同样奇怪的是,直接引用全范围数据时会抛出错误,但如果我不引用每一行,它会更新表格。
新编辑我相信我已经确定了导致我的问题的行,但我不完全理解为什么或者这是否是之前导致问题的原因。我将问题缩小到确切的单元格,每当该范围内的任何单元格包含超过 255 个字符时,它似乎都会发生。我通过向单元格中添加文本并提示错误,在范围内的其他单元格中对此进行了测试,同样我可以通过确保单元格的文本包含不超过 255 个字符来防止错误。
这是为什么?我可以手动选择数据范围并将其用作我的数据透视缓存,但我无法让代码执行完全相同的操作。在谷歌上发现了超过 255 个字符的单元格的一些问题,但我仍然感到困惑,因为我没有专门引用单元格,只是将其包含在一个范围内。非常感谢对此的一些见解,特别是这样我可以在下次数据拉取超过此限制的单元格值时找到解决方法。
【问题讨论】:
-
错误说明了什么。运行时 ?
-
错误是类型不匹配。
-
选择/激活该表并使用
ActiveTable.Change....来查看您是否收到相同的错误。 -
在我刷新作为数据透视缓存源的数据连接之前,运行脚本似乎没有问题。
-
这是一个测试。不是解决方案。
标签: vba excel pivot-table