Ya conozco dos supuestas soluciones, que enumeraré a continuación, junto con la razón por la que no funcionan para mí.
La primera es utilizar la SlideShowNextSlide
subrutina. El problema con esto es que activa el evento antes de la transición, por lo que no tengo forma de saber a qué diapositiva se está realizando la transición. Quiero que el evento se active al ingresar a ciertas diapositivas durante una presentación, sin salir de ciertas diapositivas. No puedo simplemente agregar uno alCurrentShowPosition
campo porque no necesariamente estoy avanzando a la siguiente diapositiva; Podría hacer clic en un hipervínculo. En resumen, sólo quiero disparar los eventos sobrealgunotransiciones desde la diapositiva actual, pero SlideShowNextSlide
no tengo forma de saber si me estoy moviendo a la diapositiva correcta para activar el evento.
El segundo es utilizar 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? ¿Quizás 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
Respuesta1
Dim CS As Slide
Set CS = ActivePresentation.SlideShowWindow.View.Slide
If CS.SlideIndex < 66 And CS.SlideIndex > 25 Then
'''
End If
Intento verificar si estoy en la diapositiva requerida SlideIndex
y luego ejecuto unIf Condition