2

我正在尝试使用循环为 Visio 对象设置动画,例如:

For reposition = 2 To 6
    xpos = reposition
    ypos = reposition

    sh1.SetCenter xpos, ypos

    Sleep 1000

Next reposition

虽然这确实将对象从起始位置移动到结束位置,但中间步骤是不可见的。延迟后仅显示最终位置。

如果我将 aMsgBox放入循环中,则每个中间位置都是可见的,但必须单击一个分散注意力的居中位置的框才能看到这些。

如何在没有用户交互和模式窗口覆盖屏幕的情况下使流程可见?

4

3 回答 3

2

DoEvents在睡前尝试声明

于 2008-11-10T19:42:19.540 回答
1

谢谢,DJ!那工作得很好。为了下一个需要示例的人的利益,下面是我的代码,它移动了已放置在 Visio 网格上的进程图标并显示连续运动(动画)(查看预览,似乎我的缩进已被消除):

Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
Sub testa()
    Dim sh1 As Visio.Shape

    Dim pagObj As Visio.Page
    Dim xpos As Double
    Dim ypos As Double

    Set pagObj = ThisDocument.Pages.Item(1)
    Set sh1 = pagObj.Shapes.Item(1)

    Dim reposition As Double

    reposition = 2#

    While reposition < 6#
        xpos = reposition
        ypos = reposition

        sh1.SetCenter xpos, ypos

        DoEvents

        Sleep 100

        reposition = reposition + 0.2
    Wend

End Sub
于 2008-11-11T18:24:09.867 回答
0

确保您将 Application.Screenupdating 设置为 true...我有一个类似的宏可以为形状设置动画,我不需要使用 DoEvents 来更新屏幕...

于 2008-11-11T15:36:43.077 回答