1

我正在尝试制作水平移动点的动画,表示表示非线性动力系统的微分方程的解。我正在使用一个形状(一个小椭圆来表示该点),我的想法是使用等待函数更新它的位置参数(我知道它确实有效,从方程解中获取实际经过的时间步长) 我遇到了问题,因为在所有宏执行期间,形状的位置没有通过多个值列表更新,只显示列表中的最后一个位置。我正在向 DoEvents 发送垃圾邮件以强制执行屏幕更新。但由于某种原因无法正常工作。我正在使用 OS X El Capitan。

我在网上看到有人演示使用几乎相同的代码,创造奇迹:https ://www.youtube.com/watch?v=6fh5yBE6Moo

即使像以下这样简单的事情也不会按预期工作:

DoEvents
ActiveSheet.Shapes("Moving Point").Left = MyZero
ActiveSheet.Shapes("Moving Point").Top = VertRef
DoEvents
timeout (1)
msgbox("Updated.")

msgbox 将显示 FIRST,然后当宏结束时,我会看到该点设置在其零位置。timeout 是我已经测试过的等待功能,并且效果很好(顺便说一下,更多的 DoEvents 垃圾邮件):

Sub timeout(duration_ms As Double)
    Dim Start_Time As Double
    Start_Time = Timer
    Do
        DoEvents
    Loop Until (Timer - Start_Time) >= duration_ms
End Sub

这真的意味着在这样的条件下工作吗?先感谢您。

4

0 回答 0