Excel 2013 vba For 循环每次迭代后刷新图表内容

Excel 2013 vba refresh chart content after each iteration of For Loop

问题:在 for 循环的每次迭代后刷新 ChartObject 中 Series 的图形表示

Ex. y=m*Cos(x) 
y - Values
m - parameter

我有一些数据是从带有参数的公式中计算出来的。我想可视化 XY 图上参数的变化有什么影响。我想在 for 循环中执行它(添加 Sleep 确实有一些时间可以看到结果)。 数据和公式在 Excel SpreadSheet 中。参数更新脚本在VBA模块中。更新适用于电子表格中的值,但不影响图形。

WorkBook.RefreshAll 不起作用; Chart.Refresh 无效

图表在上次迭代后更新。

有什么想法吗?

在每个迭代步骤后将 DoEvents 添加到您的代码中。对我有用。

在 Office 365 的 Excel 中,我只能通过这种方式进行 XYChart 实时更新(XYChart 将在 during/in 每个 For 循环迭代结束时更新)。我根本无法让 Sleep() 工作。不幸的是Application.Wait tick分辨率是1秒,所以动画可能比较慢。 <chartObject>.Chart.Refresh 也没有达到预期的效果(在 For 循环期间自动更新)。

注意:您的情况可能不需要下面的某些代码(至少 Application.ScreenUpdating 应该默认打开)。

Application.ScreenUpdating = True    
ActiveSheet.ChartObjects(1).Activate

...

    For i = 1 To 10
       'Chart source data cells manipulation/update and other chart related routines here.'

       ActiveSheet.ChartObjects(1).Activate
       Application.Wait (Now + TimeValue("00:00:01"))
       DoEvents
   Next i