【问题标题】:PivotChart - ActiveChart.Refresh works only when debuggingPivotChart - ActiveChart.Refresh 仅在调试时有效
【发布时间】:2019-08-22 09:43:22
【问题描述】:

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

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

数据透视表报表在没有基础源数据的情况下保存。选择“刷新数据”,刷新报表。 (从德语翻译)

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

  • 正常执行代码时,.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

【问题讨论】:

  • 工作簿中是否有任何工作表受保护?
  • 不,没有受保护的床单或其他花哨的东西。

标签: excel vba debugging pivot-table


【解决方案1】:

PivotChart 依赖于 PivotTable

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

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

【讨论】:

    【解决方案2】:

    你可以试试这行代码:

    Do Events
    

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

    【讨论】:

    • 不幸的是,这不是解决方案。它对我的工作簿没有影响。
    • ActiveWorkbook.RefreshAll 在新行上而不是在 activechart.refresh 行上怎么样
    【解决方案3】:

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

    希望对您有所帮助。 来自哥伦比亚的问候。

    【讨论】:

    • 不幸的是它没有帮助。我必须在 Workbook_Open() 事件中刷新工作簿。
    猜你喜欢
    • 2018-11-10
    • 2017-01-30
    • 2020-03-09
    • 1970-01-01
    • 1970-01-01
    • 2017-07-12
    • 1970-01-01
    • 2021-05-20
    • 1970-01-01
    相关资源
    最近更新 更多