好的,我正在制作一个Power Point游戏,并且此Macro需要100%的游戏正常运行。
我希望宏/代码执行的操作是重置演示文稿中所有幻灯片的计时器(重新启动幻灯片上所有动画的结果)。因为我的游戏的核心是动画,所以大多数动画一旦播放过一次就不会再播放。
现在,我发现此命令很有用,但由于它仅会重置当前幻灯片,因此无法使其与演示文稿中的其余幻灯片一起使用。
SlideShowWindows(1).View.ResetSlideTime
我发现自己试图按照自己的意愿想出一种方法来完成这项工作,但失败了很多,仅仅三天,只是寻找新的命令来完成这项工作而已。
现在我对VBA不太了解,我更像是JavaSE专家,但我认为有一种方法可以使其中一些代码正常工作。
Sub RefreshSlides()
Dim lSlideIndex As Long
lSlideIndex = SlideShowWindows(1).View.CurrentShowPosition
SlideShowWindows(1).View.GotoSlide lSlideIndex
End Sub
此幻灯片仅重置当前幻灯片,但我寄予厚望,可以对其进行修改以实际重置演示文稿中的所有幻灯片。
我一直在寻找2012年以来的论坛,facebook组甚至博客,以查看是否有人做过类似的事情,但我发现了一些类似的事情,但不是我所需要的,我在这里发布的代码就是我由“可能”的解决方案组成,它们可以编译,但没有存档可重置所有幻灯片。
[游戏说明] 好的,这很棘手,但我会尽力向自己解释。我的游戏是动作游戏,每张幻灯片都说幻灯片是游戏的“核心”:如果您想向前移动,请单击一个超链接,该超链接会将您带到游戏的下一个“区域”,即另一个幻灯片不同的对象和动画,直到您进入下一张幻灯片(它们永远循环),大多数时候这些动画才结束。但是当您在游戏中“战斗”时,我不允许这些动画“循环” ,因为我还使用转换计时器将您带到下一张幻灯片。翻译:您击中敌人,它会立即显示动画,一旦经过一定的时间,过渡会将您发送到下一张幻灯片,如果动画处于“循环”模式,我将无法使用过渡计时器来获取您进入下一张幻灯片。这就是为什么动画只播放一次,如果您“丢失”,则必须再次战斗,而这些动画不再播放,它看起来就很正常。
重要更新
Sub Reiniciar()
SlideShowWindows(1).View.ResetSlideTime
SlideShowWindows(1).View.GotoSlide (3)
SlideShowWindows(1).View.GotoSlide (2)
SlideShowWindows(1).View.GotoSlide (1)
End Sub
这是一个非常原始的方法,但是实际上它会重新启动我选择的所有幻灯片,但是当方法工作时,它会让您失望,即使您只是一小段时间,它也会向您显示所有选定的幻灯片,必须有一种重新启动所有幻灯片的方法 1)无需选择所有幻灯片。 2)无需浏览整个游戏幻灯片。
更新#2 我目前正在编写此代码,有人在2014年编写了此代码,但是我无法使其正常工作。
Sub testingSlideReset()
For i = 1 To ActivePresentation.Slides.Count
ActivePresentation.Slides(i).Select
Application.CommandBars.ExecuteMso ("SlideReset")
Next i
End Sub
一些开发人员告诉这位导师,可以在Next i语句之前使用“ DoEvents命令”修复该代码,但这只是行不通,我不知道为什么。
这是我的代码版本:
Sub SlidesReset()
For i = 1 To ActivePresentation.Slides.Count
ActivePresentation.Slides(i).Select
DoEvents
Application.CommandBars.ExecuteMso ("SlideReset")
Next i
End Sub
(不起作用,我正试图找出原因。)
因此,我将不断更新它,直到有更好的解决方案为止。
如果有人可以帮助我,我将不胜感激,我的意思是很多。