【发布时间】:2010-06-05 09:35:25
【问题描述】:
是否有某种事件允许在任何时候进入幻灯片或离开幻灯片时运行宏?
【问题讨论】:
标签: vba powerpoint
是否有某种事件允许在任何时候进入幻灯片或离开幻灯片时运行宏?
【问题讨论】:
标签: vba powerpoint
SlideShowNextSlide 或 OnSlideShowPageChange
您可以在http://officeone.mvps.org/vba/events_version.html找到完整列表
来自http://msdn.microsoft.com/en-us/library/aa211571%28office.11%29.aspx的代码示例
此示例确定幻灯片后面的幻灯片位置 SlideShowNextSlide 事件。
如果下一张幻灯片是第三张幻灯片,则示例会更改 指向笔的指针类型和笔颜色为红色。
Private Sub App_SlideShowNextSlide(ByVal Wn As SlideShowWindow)
Dim Showpos As Integer
Showpos = Wn.View.CurrentShowPosition + 1
If Showpos = 3 Then
With ActivePresentation.SlideShowSettings.Run.View
.PointerColor.RGB = RGB(255, 0, 0)
.PointerType = ppSlideShowPointerPen
End With
Else
With ActivePresentation.SlideShowSettings.Run.View
.PointerColor.RGB = RGB(0, 0, 0)
.PointerType = ppSlideShowPointerArrow
End With
End If
End Sub
【讨论】:
我想添加该事件以使用确实取决于 PowerPoint 的版本。 对我来说(PP 2007),下一个事件相当稳定:
Sub OnSlideShowPageChange(ByVal objWindow As SlideShowWindow)
Debug.Print objWindow.View.Slide.SlideIndex ' you can use this to check which slide invokes the event
End Sub
此代码不需要额外的类结构(PPTEvent)。 但如果您打算使用其他事件,最好将此类的初始化放入 OnSlideShowPageChange。
请注意,此代码处理给定任务的第一部分 - 进入幻灯片。 您可能会问“它的离开怎么样?”。嗯,这是一个相对论的问题。一张幻灯片进入的同时离开另一张幻灯片。只需使用 objWindow.View.Slide.SlideIndex 来跟踪当前幻灯片,将其与上一张幻灯片的索引进行比较,然后确定您是否刚刚离开了需要的幻灯片。
【讨论】: