【问题标题】:How to run a macro "OnEnterSlide" or "OnLeaveSlide" in Powerpoint VBA?如何在 Powerpoint VBA 中运行宏“OnEnterSlide”或“OnLeaveSlide”?
【发布时间】:2010-06-05 09:35:25
【问题描述】:

是否有某种事件允许在任何时候进入幻灯片或离开幻灯片时运行宏?

【问题讨论】:

    标签: vba powerpoint


    【解决方案1】:

    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
    

    【讨论】:

    • 那只是为了进入。不知道有没有关于“离开”的事件
    • 我尝试通过在执行窗口中执行此stackoverflow.com/questions/2979950/… 来触发它,但似乎不起作用。我是不是搞错了什么?
    • 在另一个问题中回答了
    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-08-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多