Ya conozco dos supuestos arreglos, que enumeraré a continuación, junto con la razón por la que no funcionan para mí.
El primero es usar la SlideShowNextSlide
subrutina. El problema con esto es que dispara el evento antes de la transición, por lo que no tengo forma de saber a qué diapositiva se está haciendo la transición. Quiero que el evento se active al ingresar ciertas diapositivas durante una presentación, sin dejar ciertas diapositivas. No puedo simplemente agregar uno al CurrentShowPosition
campo porque no necesariamente avanzo a la siguiente diapositiva; Podría hacer clic en un hipervínculo. En resumen, solo quiero disparar los eventos en algunas transiciones de la diapositiva actual, pero SlideShowNextSlide
no tengo forma de saber si me estoy moviendo a la diapositiva derecha para disparar el evento.
El segundo es usar la OnSlideShowPageChange
subrutina. El problema con esto es que, dado que ya guardé, cerré y volví a abrir mi presentación de diapositivas de PowerPoint una vez, PowerPoint simplemente decide ignorar el código en la subrutina.
¿Alguien tiene alguna sugerencia sobre lo que puedo hacer? ¿Tal vez una forma de solucionar uno de los problemas antes mencionados? Estoy usando PowerPoint 2013 en Windows 8.1.
Aquí está el código que quiero usar:
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