PowerPoint VBA - 一些代码不按顺序运行(MsgBox,Sleep等)

时间:2015-07-09 14:41:19

标签: vba powerpoint sleep

VBA - 7.1。 PowerPoint 2013

我正在尝试为幻灯片上的图像实现一个小动画(隐藏 - 等待半秒 - 显示)。

我之前注意到MsgBox通常在前一行代码完全执行之前弹出。虽然很烦人,但我并没有太多烦恼。然而,与睡眠相同的行为使我的方法崩溃了。我不知道系统进程管理(或线程或其他)是如何由PowerPoint内部完成的,但似乎有一些问题。

我到目前为止已尝试过

1

Public Declare PtrSafe Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As LongPtr)

Sub SleepTest()
ActivePresentation.Slides("Slide 1").Shapes("Worker").Visible = 0
Sleep 5000 'delay in milliseconds
ActivePresentation.Slides("Slide 1").Shapes("Worker").Visible = 1
End Sub 

Resut: - >什么都没发生。在可见性设置为0之前,睡眠开始,等待5秒,图像隐藏并显示在毫秒内(因此您无法看到它发生)

2

Public Declare PtrSafe Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As LongPtr)

Sub SleepTest()
ActivePresentation.Slides("Slide 1").Shapes("Worker").Visible = 0
MsgBox("temptemptemp")
Sleep 5000 'delay in milliseconds
ActivePresentation.Slides("Slide 1").Shapes("Worker").Visible = 1
End Sub

结果: - > MsgBox立即弹出,几秒钟后显示msgbox,图像隐藏,单击确定,应用程序等待5秒,图像显示回来。

3:

我尝试隐藏并在两个不同的潜艇中显示步骤,并尝试在睡眠后调用第二个潜水艇。它也表现出与第一次尝试相同的行为。

有人能为这种行为提供一些解释吗?或建议任何其他方式来实现我的目标。

0 个答案:

没有答案