Excel 数据透视图-活动图表。刷新仅在调试时有效

Excel 数据透视图-活动图表。刷新仅在调试时有效,excel,vba,debugging,pivot-table,Excel,Vba,Debugging,Pivot Table,我有一个Excel工作簿,其中我正在根据现有的透视表,根据VBA生成透视图。此图表将作为新工作表创建 到目前为止,结果与预期一致。但是,当我转到生成的图表并希望在字段编辑器中更改某些内容时,我会收到一条错误消息: 数据透视表报表保存时未包含基础源数据。选择“刷新数据”,刷新报告。(翻译自德语) 完成后,我可以在field editor中工作。经过长时间紧张的调试,我发现我的代码在使用调试器进行调试时表现不同 正常执行代码时,.Refresh似乎没有效果 使用调试器单步执行代码时,.Refres

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

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

数据透视表报表保存时未包含基础源数据。选择“刷新数据”,刷新报告。(翻译自德语)

完成后,我可以在field editor中工作。经过长时间紧张的调试,我发现我的代码在使用调试器进行调试时表现不同

  • 正常执行代码时,.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
图表。添加
chartSheetName=dqSource&“透视图”
使用活动图表
.Location其中:=xlLocationAsNewSheet,名称:=chartSheetName
.hasttle=正确
.ChartTitle.Select
.ChartTitle.Text=“我的图表标题”

.Refresh'您可以尝试以下代码行:

Do Events

然后,启动实时运行的代码。

数据透视图取决于数据透视表

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

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

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

我希望这对你有帮助。
哥伦比亚致以最良好的祝愿。

不幸的是,这不是解决办法。它对我的工作簿没有影响。那ActiveWorkbook.RefreshAll怎么办?在一个新的行上,而不是使用activechart.refresh行。工作簿中有没有受保护的工作表?没有,没有受保护的工作表或其他奇特的内容。不幸的是,它没有帮助。我必须在工作簿\ u Open()事件中刷新工作簿。