【问题标题】:Excel 2007 VBA - Pivot table field list??? creates errorExcel 2007 VBA - 数据透视表字段列表???产生错误
【发布时间】: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


【解决方案1】:

我有来自多个工作表的多个枢轴,并且所有三个代码 sn-ps 都可以正常工作。应该是其他原因导致了问题,而不是代码。

【讨论】:

    【解决方案2】:

    您的代码 sn-ps 运行正常。

    可能是你的代码运行后屏幕显示没有刷新。

    尝试在您的代码中添加这一轮:

    Application.ScreenUpdating = False
        ''//Your code here
    DoEvents
    Application.ScreenUpdating = True
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-02-07
      • 1970-01-01
      • 2011-09-07
      • 1970-01-01
      • 2012-10-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多