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



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

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

保存的数据透视表报告没有基础源数据。选择"刷新数据"以刷新报表。(译自德文)

这样做之后,我可以在现场编辑器中工作。经过长时间伤脑筋的调试会话,我发现,使用调试器单步执行代码时,我的代码的行为有所不同。

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

我用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

PivotChart取决于PivotTable

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

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

你可以试试这行代码:

Do Events

在此之后,在实时运行中启动代码。

您的问题是由于您需要链接工作表中的基础数据。 定位在数据透视表的单元格中,转到数据透视表选项=>数据选项卡=>选中"将源数据与文件一起保存"选项。此选项使 excel 将数据透视缓存与工作表一起保存。

我希望这对你有所帮助。 来自哥伦比亚的最诚挚问候。

最新更新