我在PowerPoint 2010启用宏的演示文稿中附加了以下VBA代码:
Public CurrentSlideIndex As Integer
Sub OnSlideShowPageChange()
CurrentSlideIndex = ActivePresentation.SlideShowWindow.View.CurrentShowPosition
If CurrentSlideIndex = 1 Then
MsgBox "First Page"
' some initialization
End If
End Sub
我想在显示第一页时进行一些初始化。问题是,当我第一次运行演示文稿时,不会触发例程。我需要停止演示并再次运行它,然后它才能工作,并且继续工作。只有第一次运行不起作用。
有没有解决方法?
答案 0 :(得分:0)
Pompair,
尝试以下内容:
Sub OnSlideShowPageChange(ByVal SlideSet As SlideShowWindow)
If SlideSet.View.CurrentShowPosition = _
SlideSet.Presentation.SlideShowSettings.StartingSlide Then
MsgBox "I am a Message."
End If
End Sub
将代码保存在模块中,从头开始运行powerpoint。我在2007年运行它,所以我相信它在Powerpoint 2007或2010中运行良好。
您还可以使用此代码为其他幻灯片放映位置编写模块。查看MSDN文档以获取更完整的可能性列表: 2007年 - http://msdn.microsoft.com/en-us/library/bb265987(v=office.12).aspx
2010 - http://msdn.microsoft.com/en-us/library/ff746846.aspx
〜JOL
答案 1 :(得分:0)
我会对代码进行一些更改:
Public CurrentSlideIndex As Long
Sub OnSlideShowPageChange(ByVal SSW As SlideShowWindow)
CurrentSlideIndex = SSW.View.CurrentShowPosition
If CurrentSlideIndex = 1 Then
MsgBox "First Page"
' some initialization
End If
End Sub
然后(感谢Hans Hofman为此:http://www.tech-archive.net/Archive/Office/microsoft.public.powerpoint/2006-02/msg01234.html)在第一张幻灯片上放置一个虚拟的active-x控件(或者实际上只是关闭第一张幻灯片,因此它不会出现在节目中)。 / p>
显然迫使VBA初始化并且瞧,事件处理程序触发。