sam*_*mJL 19 excel vba excel-2007 excel-vba
我有一个带有图表(Clustered Column)的Excel文档(2007),它从包含计算值的单元格中获取其Data Series
计算值不会直接更改,而只会因工作表中其他单元格的更改而更改
当我更改工作表中的其他单元格时,将重新计算数据系列单元格并显示新值 - 但基于此数据系列的图表拒绝自动更新
我可以通过保存/关闭或切换其中一个设置(例如反转x/y轴然后将其放回)或重新选择数据系列来更新图表
我在网上找到的每个解决方案都不起作用
我尝试过VBA脚本,如:
Application.Calculate
Application.CalculateFull
Application.CalculateFullRebuild
ActiveWorkbook.RefreshAll
DoEvents
这些都不会更新或刷新图表
我注意到,如果我键入我的数据系列,实际数字而不是计算,它将更新图表 - 就像Excel不想识别计算中的更改一样
有没有人以前经历过这个或知道我可以做些什么来解决这个问题?谢谢
小智 13
这是我发现不断更新图表的唯一方法.它减少了问题的根本原因(我假设):系列数据被缓存在图表中.通过强制图表重新评估系列,我们正在清除缓存.
' Force the charts to update
Set sht = ActiveSheet
For Each co In sht.ChartObjects
co.Activate
For Each sc In ActiveChart.SeriesCollection
sc.Select
temp = sc.Formula
sc.Formula = "=SERIES(,,1,1)"
sc.Formula = temp
Next sc
Next co
Run Code Online (Sandbox Code Playgroud)
我遇到了同样的问题 - 不知道为什么,当它发生时,我强制更新图表的唯一方法是更改图表定义本身中的某些内容,这可以通过 VBA 轻松完成,如下所示:
Dim C As ChartObject: Set C = Me.ChartObjects("chart name")
C.Chart.ChartTitle.Text = C.Chart.ChartTitle.Text + "1"
Run Code Online (Sandbox Code Playgroud)
可能有一个更好的答案可以触及问题的根源 - 但我认为这可能会有所帮助。在工作表上工作时,我会在图表的一部分(或整个图表)上快速按 Ctrl-X、Ctrl-V 来强制更新图表。