如何在Powerpoint VBA中运行宏“OnEnterSlide”或“OnLeaveSlide”?

时间:2010-06-05 09:35:25

标签: vba powerpoint

是否有某种事件可以在任何人进入幻灯片或留下幻灯片时运行宏?

2 个答案:

答案 0 :(得分:6)

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

答案 1 :(得分:-1)

我想添加该事件使用真的取决于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 来跟踪当前幻灯片,将其与上一张幻灯片的索引进行比较,并确定您是否刚刚离开了所需的幻灯片。