【发布时间】:2011-11-17 01:22:44
【问题描述】:
上次更新于 2011 年 10 月 14 日 - 我现在知道更多信息,所以我将在这里总结所有内容并删除我之前的所有描述/问题。
问题是,在运行某个程序后,我得到了一些奇怪的错误。当我单击“拆分”时,它类似于但不完全相同。不同之处在于实心灰色条不显示。这有点奇怪。最近,我开始认为这可能是由所涉及的数据透视表的字段列表引起的。
以下三段代码中的任何一段都会出现问题
代码 1
Dim pvtCache As PivotCache
For Each pvtCache In ThisWorkbook.PivotCaches
pvtCache.Refresh
Next pvtCache
代码 2
ThisWorkbook.RefreshAll
代码 3
Dim ws As Worksheet
Dim pt As PivotTable
For Each ws In ThisWorkbook.Worksheets
For Each pt In ws.PivotTables
pt.RefreshTable
Next pt
Next ws
但不是这样,唯一的区别是我将 ws.Activate 添加到代码 3
代码 4
Dim ws As Worksheet
Dim pt As PivotTable
For Each ws In ThisWorkbook.Worksheets
ws.Activate
For Each pt In ws.PivotTables
pt.RefreshTable
Next pt
Next ws
所以,我的问题是,任何人都可以解释一下吗?任何人都可以修复代码 1(在具有来自大型数据源的 2 个数据透视缓存但有 46 个数据透视表的电子表格中更快)以使其在没有此错误的情况下工作?
感谢您的帮助!!!
【问题讨论】:
-
我们无法在没有看到代码的情况下进行猜测,您也无法发布它...好吧,无论如何,您仍然可以在代码中设置一些断点(并注释任何
screenupdating设置为false) 并查看拆分出现的位置(在几行代码中设置断点时)。这可能会帮助您专注于“错误”的行 -
不知道您为什么不愿意发布您的代码:您的公司是否担心我们会复制您的秘密漏洞?我们都在这里发布“工作”代码......
-
您可以“手动”刷新所有数据透视表吗?我的直觉是你不能。
-
@adamleerich 对不起,我不明白。你的意思是,没有代码?我可以试试,但这会很痛苦,而且不是一个好的长期解决方案。还是您的意思是刷新代码中的每个数据透视表,而不是上面刷新每个数据透视缓存的方法?问题是,工作表中有 46 个数据透视表,只有 2 个数据透视缓存,因此它会进行 44 次额外刷新,这确实需要大约 45 秒的时间。但是,这可能会比这个奇怪的屏幕更好。
-
"问题是,在运行某个程序后,我得到了一些奇怪的错误。" - 你得到的具体错误是什么?
标签: excel vba pivot-table