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 - 数据透视表字段列表???产生错误的主要内容,如果未能解决你的问题,请参考以下文章

如何刷新数据透视图

Excel 使用 VBA 遍历嵌套的数据透视表行字段

excel 数据透视表 " 启用选定内容" 的用途

加快数据透视表过滤 VBA 代码

在 Excel 2003 中筛选数据透视表

SSAS 多维数据集 Excel 数据透视表隐藏字段