Excel 2007 VBA - 数据透视表字段列表???产生错误
Posted
技术标签:
【中文标题】Excel 2007 VBA - 数据透视表字段列表???产生错误【英文标题】:Excel 2007 VBA - Pivot table field list??? creates error 【发布时间】: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 秒的时间。但是,这可能会比这个奇怪的屏幕更好。
"问题是,在运行某个程序后,我得到了一些奇怪的错误。" - 你得到的具体错误是什么?
【参考方案1】:
我有来自多个工作表的多个枢轴,并且所有三个代码 sn-ps 都可以正常工作。应该是其他原因导致了问题,而不是代码。
【讨论】:
【参考方案2】:您的代码 sn-ps 运行正常。
可能是你的代码运行后屏幕显示没有刷新。
尝试在您的代码中添加这一轮:
Application.ScreenUpdating = False
''//Your code here
DoEvents
Application.ScreenUpdating = True
【讨论】:
以上是关于Excel 2007 VBA - 数据透视表字段列表???产生错误的主要内容,如果未能解决你的问题,请参考以下文章