VBA - 7.1。 PowerPoint 2013
我正在尝试为幻灯片上的图像实现一个小动画(隐藏 - 等待半秒 - 显示)。
我之前注意到MsgBox通常在前一行代码完全执行之前弹出。虽然很烦人,但我并没有太多烦恼。然而,与睡眠相同的行为使我的方法崩溃了。我不知道系统进程管理(或线程或其他)是如何由PowerPoint内部完成的,但似乎有一些问题。
我到目前为止已尝试过
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秒,图像隐藏并显示在毫秒内(因此您无法看到它发生)
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秒,图像显示回来。
我尝试隐藏并在两个不同的潜艇中显示步骤,并尝试在睡眠后调用第二个潜水艇。它也表现出与第一次尝试相同的行为。
有人能为这种行为提供一些解释吗?或建议任何其他方式来实现我的目标。