我有一个大型工作簿,我正在尝试构建报告,包括多个图表。工作簿必须处于手动计算模式才能工作。我已将计算划分为不同的表格,并编写了vba脚本以在不同的表格组合上运行计算。我遇到的问题是,在运行这些脚本后,我所拥有的图表将不会更新。数据会更新,如果我手动进入图表并选择数据"并重新选择相同的数据,然后他们将更新。有没有办法在脚本结束时自动执行此操作?我在不同的论坛上尝试了不同的建议,但似乎没有任何效果。这是我目前正在使用的代码,但它不会更新图表:
Sub Calculate1()
Sheets("Sheet 1").Calculate 'Sheet with calculations
Sheets("Sheet 2").Calculate 'Sheet referencing final numbers from sheet 1, and displaying graphs
Dim co As ChartObject
For Each co In Sheets("Sheet 2").ChartObjects
co.Chart.Refresh
DoEvents
Next co
End Sub
感谢您花时间去看看!我正在运行Excel for Mac 2016.在其他论坛上提出的一个建议是暂时将计算模式设置为自动,但这对我来说不是一个选项,因为这会使程序崩溃。
答案 0 :(得分:0)
您应该能够在循环后添加co.calculate
。您也可以在循环之前更改Application.Calculation = xlAutomatic
,然后在循环后更改回Application.Calculation = xlManual
。
答案 1 :(得分:0)
此代码段应该有效:
' 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
积分:https://stackoverflow.com/a/11581258/2707864
这也可能有用(YMMV):
Worksheets("Sheet 2").Cells.WrapText=False
' Run your calculations
Worksheets("Sheet 2").Cells.WrapText=True
积分:https://stackoverflow.com/a/7211065/2707864
另见