0

我在启用宏的 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    

我想在显示第一页时在那里进行一些初始化。问题是当我第一次运行演示文稿时,例程没有被触发。我需要停止演示并再次运行它,然后它就可以工作了,之后也继续工作。只有第一次运行不起作用。

有解决办法吗?

4

2 回答 2

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

然后(谢谢你,汉斯霍夫曼: http ://www.tech-archive.net/Archive/Office/microsoft.public.powerpoint/2006-02/msg01234.html )在第一个上放一个虚拟的active-x控件幻灯片(或者实际上只是关闭第一张幻灯片,因此它不会出现在节目中)。

这显然迫使 VBA 初始化,瞧,事件处理程序触发。

于 2012-07-29T19:02:51.340 回答
0

庞培,

尝试这样的事情:

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

~乔尔

于 2012-07-26T18:11:09.113 回答