全局变量在启动时不可用

时间:2012-07-26 15:59:16

标签: vba powerpoint powerpoint-vba powerpoint-2010

我在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    

我想在显示第一页时进行一些初始化。问题是,当我第一次运行演示文稿时,不会触发例程。我需要停止演示并再次运行它,然后它才能工作,并且继续工作。只有第一次运行不起作用。

有没有解决方法?

2 个答案:

答案 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初始化并且瞧,事件处理程序触发。