我希望每次进入新幻灯片时都能运行一个简单的宏,无论我是通过正常的点击前进还是通过幻灯片中的链接进入。这可能吗?我搜索了某种“页面”或“幻灯片”对象,我可以在其上添加“进入”或“加载”操作,但如果存在的话,我还没有找到。
目标是设置一个“上一张幻灯片”全局变量,用于实现“返回”按钮。请注意,此按钮会将用户返回到他或她所浏览的最后一张幻灯片,而不一定按顺序返回上一张幻灯片。也就是说,在幻灯片 #4 上,我单击附录中幻灯片 #101 的链接,然后单击“返回”,然后返回到 #4,而不是 #100。这很好用,我只需要知道我当时在哪张幻灯片上。
作为一种解决方法,我向幻灯片母版中添加了一个不可见的对象,鼠标悬停即可调用此宏。这应该可行,但看起来很丑。
有没有更好的方法?谢谢!
这是有效的代码:
Public PreviousSlideIndex As Long
Public CurrentSlideIndex As Long
Public Sub OnSlideShowPageChange(ByVal Window As SlideShowWindow)
PreviousSlideIndex = CurrentSlideIndex
CurrentSlideIndex = ActivePresentation.SlideShowWindow.View.Slide.SlideIndex
End Sub
Sub ReturnToPreviousSlide()
ActivePresentation.SlideShowWindow.View.GoToSlide PreviousSlideIndex
End Sub
我将ReturnToPreviousSlide
“后退”按钮设置为 OnClick 操作,一切正常。
您可以使用一堆先前的页面使这个功能变得稍微复杂一些,让用户可以浏览几张幻灯片然后仍然可以返回到他们刚才所在的位置。
答案1
我相信你正在寻找该SlideShowNextSlide
事件,如记录在http://msdn.microsoft.com/en-us/library/ff745863.aspx:
在转换到下一张幻灯片之前立即发生。对于第一张幻灯片,在 SlideShowBegin 事件之后立即发生。
MSDN 链接中包含一个示例。
每http://officeone.mvps.org/vba/run_macro_at_slide.html(“在特定幻灯片上运行 VBA 宏”),还有一个OnSlideShowPageChange
事件,尽管我在 MDSN 上找不到有关此事件的任何官方文档。但是,根据http://officeone.mvps.org/vba/events_version.html:
显示新幻灯片后发生。
这是一个自动宏,不需要声明任何对象。即使承载这些事件处理程序的演示文稿未处于幻灯片放映模式,它也会触发。