每次循环迭代后,都在Excel中更新图表

时间:2018-11-10 15:36:55

标签: excel vba charts

我试图通过在迭代循环中生成其范围来为Excel中的参数曲线设置动画。我正在使用代码:

Public Sub playswirl()
    Range([a8], [a8].End(xlDown)).Clear
    Set cell = Range("a8")
    Do While cell.Offset(0, 1) <> ""
       cell.Offset(-1, 0).Copy cell
       ActiveSheet.ChartObjects(2).Chart.Refresh
       DoEvents
       Sleep (50)
       Set cell = cell.Offset(1, 0)
    Loop
End Sub

在第一条指令中清除了图表,然后在循环中一次重新构建了一项。代码运行时,我看到电子表格中的值一次更改一个,但是图表从未更新(我看到完整的曲线,即执行第一行代码之前的状态)。当我ctrl-break并将代码置于调试状态时,图表将更新到代码被中断的位置。 我以为chart.refresh可以解决问题-并在无效的情况下添加了doevents-但没有运气。将sleep调用更改为Excel本机应用程序。Wait调用也无济于事(无论如何都太慢了)。 有什么想法吗?

1 个答案:

答案 0 :(得分:0)

我认为图表可能不是问题;更新系统可能有问题。如果Application.ScreenUpdating = True(默认情况下为True),则可以尝试以下操作:

  • 尝试将“ DoEvents”添加到循环中,如说明的here
  • 尝试在函数中添加“计算”。例如,编写代码ActiveSheet.Calculate。

让我知道这些进展如何。