【问题标题】:How do I animate a graph created in VBA using arrays如何使用数组对在 VBA 中创建的图形进行动画处理
【发布时间】:2020-08-01 06:46:55
【问题描述】:

我编写了一个代码,它使用数组更新 vba 中的散点图。我的目标是在 excel 之外的 vba 中做所有事情。我确实通过单击一个按钮从 excel 启动程序。我能够以给定的时间间隔更改和更新图表。但是我看不到图表的演变,即在 VBA 脚本完成之前我看不到图表。如何在程序运行时使图表保持活跃。我的最终目标是每 15 秒从网站上抓取一次数据,进行一些计算并在图表中显示它是如何演变的。

Sub test3()
Dim C As Chart
Dim s As Series
Dim myData, A, B, D As Variant
ReDim A(50, 1), B(50, 1), D(50, 1)
Set C = ActiveSheet.Shapes.AddChart.Chart
With C
    Set s = C.SeriesCollection.NewSeries
    Set v = C.SeriesCollection.NewSeries
    C.ChartType = xlXYScatterLines
End With
x = Timer()
xxx = x
While xx - x < 30
    xx = Timer()
    If xx - xxx > 2 Then
        i = i + 1
        A(i, 1) = 0.6 * i
        B(i, 1) = xx - x
        D(i, 1) = i ^ 0.5
        myData = A '
        myData1 = B '
        myData2 = D
    With C
        Set s = C.SeriesCollection(1)
        s.XValues = myData1
        s.Values = myData
        Set v = C.SeriesCollection(2)
        v.XValues = myData1
        v.Values = myData2
    End With
    xxx = Timer()
    End If
Wend
End Sub

【问题讨论】:

  • 最好使用DoEvents,但如果不共享代码,就无法收到告诉您在哪里的答案...
  • 我已经粘贴了代码。对不起,如果你觉得它很业余,但我就是这样。
  • 我没有看到任何代码...您是否编辑了您的问题并添加了代码?您可能忘记保存更改...
  • 对不起,我是这个网站的新手。我将回到我的问题并粘贴代码。我应该补充一点,通过将数据保存在 Excel 工作表中,我已经完成了很好的动画图形。但我只是想更进一步。
  • 没问题。有时每个人都是新的......

标签: arrays excel vba charts jquery-animate


【解决方案1】:
  1. 首先,最好正确声明所有使用的变量:
Dim C As Chart
Dim s As Series, v As Series, x As Double, xx As Double, xxx As Double
Dim myData, myData1, myData2, A, B, D As Variant, i As Long

请注意myData, myData1, myData2, A, B 属于Variant 类型,因为如果您没有指定任何关于该类型的内容,Excel 就会这样做。不是因为枚举以D As Variant 结尾。我的意思是,在下一个示例声明中

Dim x, y, z As Long

只有 zLong 类型。 xy 是 'Variant` 类型...

  1. 然后,在xx = Timer()之后插入DoEvents
'...
'your code...
    xx = Timer()
    DoEvents
'your code...
'...

【讨论】:

  • 感谢您的回复并抽出宝贵时间。我会试试看并听从你的建议。我非常零星地编写 VBA 代码,所以我的代码非常草率和业余。再次感谢您。
  • @Dantes:很高兴我能帮上忙!但是当有人给我们一个解决方案时,我们在这里勾选代码左侧的复选框,以使其接受答案。这样,其他搜索类似内容的人就会知道该解决方案有效...... :)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-11-17
  • 1970-01-01
相关资源
最近更新 更多