Mir sind bereits zwei angebliche Lösungen bekannt, die ich im Folgenden zusammen mit der Begründung auflisten werde, warum sie bei mir nicht funktionieren.
Die erste Möglichkeit besteht darin, die Subroutine zu verwenden SlideShowNextSlide
. Das Problem dabei ist, dass das Ereignis vor dem Übergang ausgelöst wird, sodass ich nicht wissen kann, zu welcher Folie gewechselt wird. Ich möchte, dass das Ereignis beim Aufrufen bestimmter Folien während einer Präsentation ausgelöst wird, nicht beim Verlassen bestimmter Folien. Ich kann nicht einfach eins zum CurrentShowPosition
Feld hinzufügen, da ich nicht unbedingt zur nächsten Folie gehe; ich klicke vielleicht auf einen Hyperlink. Kurz gesagt, ich möchte die Ereignisse nur auslösen, wennmancheÜbergänge von der aktuellen Folie, aber SlideShowNextSlide
ich habe keine Möglichkeit zu wissen, ob ich zur richtigen Folie gehe, um das Ereignis auszulösen.
Die zweite Möglichkeit besteht darin, die Subroutine zu verwenden OnSlideShowPageChange
. Das Problem dabei ist, dass PowerPoint den Code in der Subroutine einfach ignoriert, da ich meine PowerPoint-Präsentation bereits einmal gespeichert, geschlossen und erneut geöffnet habe.
Hat jemand Vorschläge, was ich tun kann? Vielleicht eine Möglichkeit, eines der oben genannten Probleme zu beheben? Ich verwende PowerPoint 2013 unter Windows 8.1.
Hier ist der Code, den ich verwenden möchte:
Private Sub EventHandler_SlideShowNextSlide(ByVal SSW As SlideShowWindow)
' The purpose here is to stop music playing in the background, which happens on certain slides.
' For my purposes, it's not enough to simply state how many slides to play the music over,
' because some slides that need the music stopped can occur before slides that need it playing.
Dim Change As Boolean
If SSW.View.CurrentShowPosition < 66 And ((SSW.View.CurrentShowPosition < 42 And SSW.View.CurrentShowPosition > 25) Or SSW.View.CurrentShowPosition Mod 2 = 0) _
Then
ActivePresentation.Slides(1).Shapes("music file.mp3").Delete
Change = True
End If
If Change Then Application.CommandBars.ExecuteMso "Undo"
End Sub
Antwort1
Dim CS As Slide
Set CS = ActivePresentation.SlideShowWindow.View.Slide
If CS.SlideIndex < 66 And CS.SlideIndex > 25 Then
'''
End If
Ich versuche zu überprüfen, ob ich mich in der gewünschten Folie befinde, SlideIndex
und führe dann eineIf Condition