For循环

时间:2015-06-21 11:59:01

标签: excel vba loops iteration refresh

问题:在for循环的每次迭代

之后刷新ChartObject中的Series的图形表示
Ex. y=m*Cos(x) 
y - Values
m - parameter

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

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

最后一次迭代后的图表更新。

有什么想法吗?

2 个答案:

答案 0 :(得分:1)

在每次迭代步骤后向代码中添加DoEvents。它对我有用。

答案 1 :(得分:0)

在Excel for Office 365中,我仅以这种方式进行XYChart实时更新(XYChart在每个For循环迭代回合期间/结束时进行更新)。我根本无法Sleep()工作。不幸的是Application.Wait的滴答分辨率为1秒,因此动画可能相对较慢。另外,<chartObject>.Chart.Refresh并没有达到预期的效果(在For循环中自动更新)。

注意:根据您的情况,以下某些代码可能不是必需的(默认情况下,至少Application.ScreenUpdating应该为ON)。

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