2

次のようなループで Visio オブジェクトをアニメーション化しようとしています。

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

    sh1.SetCenter xpos, ypos

    Sleep 1000

Next reposition

これにより、オブジェクトが開始位置から終了位置に移動しますが、中間のステップは表示されません。しばらくして、最終位置のみが表示されます。

をループに入れると、MsgBoxそれぞれの中間位置が表示されますが、これらを表示するには、中央に配置された邪魔なボックスをクリックする必要があります。

ユーザーの操作やモーダル ウィンドウで画面を覆うことなくフローを表示するにはどうすればよいですか?

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 に答える