excel - 数据透视图 - ActiveChart.Refresh 仅在调试时有效

标签 excel vba debugging pivot-table

我有一个 Excel 工作簿,我在其中根据现有数据透视表生成每个 VBA 的数据透视图。该图表被创建为新工作表。

到目前为止,结果符合预期。但是,当我转到生成的图表并想要在字段编辑器中更改某些内容时,我收到一条错误消息:

Pivot table report was saved without the underlying source data. Select "Refresh data", to refresh the report. (Translated from German)

完成此操作后,我可以在字段编辑器中工作。经过长时间令人紧张的调试 session 后,我发现我的代码在使用调试器单步执行时的行为有所不同。

  • 正常执行代码时,.Refresh 看似没有效果。
  • 使用调试器单步执行代码时,.Refresh 按预期工作,并且我在字段编辑器中没有收到错误消息。

我在 Excel 2010 和 2013 上进行了尝试。两个版本都显示相同的行为。

  Charts.Add    
  chartSheetName = dqSource & "_PIVOT_CHART"
  With ActiveChart
    .Location where:=xlLocationAsNewSheet , Name:=chartSheetName 
    .HasTitle = True
    .ChartTitle.Select
    .ChartTitle.Text = "My chart title"  
    .Refresh ' <-- This is the suspect
  End With

最佳答案

数据透视图依赖于数据透视表

我建议改为刷新该数据透视表的 PivotCache:

With myPivotTable
    .PivotCache.Refresh
    .PivotCache.MissingItemsLimit = xlMissingItemsNone
End With

关于excel - 数据透视图 - ActiveChart.Refresh 仅在调试时有效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55451489/

相关文章:

excel - 有没有办法找到数据透视表的范围

vba - 复制并粘贴值而不是公式

VBA 宏循环在特定列中显示值

c++ - 检查内联函数中的变量值

excel - 处理时间是指数非线性的? (VBA 集合)

excel - 在 Excel 中将 x 轴的最大值和最小值设置为日期

excel - 如何在字符串比较中忽略大小写

python - 将整个 Excel 文件导出为 CSV

css - 如何在 Chrome 中调试 LESS?

asp.net - 是否有任何理由不将 pdb 文件部署到生产 Web 服务器?