PowerPoint VBA-某些代码运行不正常(MsgBox、Sleep等)

PowerPoint VBA-某些代码运行不正常(MsgBox、Sleep等),vba,powerpoint,sleep,Vba,Powerpoint,Sleep,VBA-7.1。PowerPoint 2013 我正在尝试为幻灯片上的图像实现一个小动画(隐藏-等待半秒-显示) 我之前注意到MsgBox通常在前一行代码完全执行之前弹出。虽然这很烦人,但我并没有为此操心太多。然而,同样的睡眠行为让我的方法崩溃了。我不知道PowerPoint是如何在内部完成系统进程管理(或线程或其他)的,但它似乎有一些问题 到目前为止,我已经试着跟随 1: 结果:->什么也没发生。在可见性设置为0之前,睡眠开始,等待5秒,图像隐藏并在毫秒内显示(所以您看不到它发生) 2: 结果

VBA-7.1。PowerPoint 2013

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

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

到目前为止,我已经试着跟随

1: 结果:->什么也没发生。在可见性设置为0之前,睡眠开始,等待5秒,图像隐藏并在毫秒内显示(所以您看不到它发生)

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

三: 我试着把隐藏和显示步骤放在两个不同的sub中,并试着在睡眠后调用第二个sub。它还表现出与第一次尝试相同的行为

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

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 
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