PowerPoint VBA - OnSlideShowPageChange不基于幻灯片编号

时间:2018-04-22 06:20:46

标签: vba powerpoint powerpoint-vba

到目前为止,我一直在使用它:

Sub OnSlideShowPageChange(ByVal objWindow As SlideShowWindow)
'    MsgBox objWindow.View.Slide.SlideIndex
    If objWindow.View.Slide.SlideIndex = 10 Then Call ReadMyFile1
End Sub

但每次插入幻灯片时,SlideIndex都会更改,我必须更改代码。还有更好的方法吗?

我使用OnSlideShowPageChange作为Form_Load的等价物,但我需要指定幻灯片索引。

1 个答案:

答案 0 :(得分:1)

使用.SlideID

代替.SlideIndex

.SlideIndex返回演示文稿中幻灯片的序号;改变幻灯片的顺序,正如你所见,序数会改变。

.SlideID是一个Long,它在创建幻灯片时分配给幻灯片,并且永远不会更改,即使幻灯片已重新排序。

好。几乎从不改变。如果您将幻灯片插入到其他演示文稿中,它将获得一个新的.SlideID

如果这可能是一个问题,您可能需要在幻灯片中添加一个标签,您可以在IDE的立即窗口中执行此操作:

ActivePresentation.Slides(x).Tags.Add "Tagname", "TagValue"

其中X是.SlideIndex,Tagname和TagValue是你喜欢的任何字符串。

然后将现有例程更改为此类{aircode}

Sub OnSlideShowPageChange(ByVal objWindow As SlideShowWindow)
    If objWindow.View.Slide.Tags("Tagname") = "TagValue" Then Call ReadMyFile1
    ' If there's no tag on the slide, querying .Tags("any string") will return a blank; 
    ' no need for error handling here
End Sub