Como faço para disparar um evento quando o slide muda no PowerPoint?

Como faço para disparar um evento quando o slide muda no PowerPoint?

Já conheço duas supostas soluções, que listarei abaixo, junto com o motivo pelo qual não funcionam para mim.

A primeira é usar a SlideShowNextSlidesub-rotina. O problema disso é que ele dispara o evento antes da transição, então não tenho como saber para qual slide está sendo feita a transição. Quero que o evento seja acionado ao entrar em determinados slides durante uma apresentação, não saindo de determinados slides. Não posso simplesmente adicionar um ao CurrentShowPositioncampo porque não estou necessariamente avançando para o próximo slide; Posso clicar em um hiperlink. Resumindo, quero disparar apenas os eventosalgunstransições do slide atual, mas SlideShowNextSlidenão tenho como saber se estou passando para o slide certo para disparar o evento.

A segunda é usar a OnSlideShowPageChangesub-rotina. O problema é que, como já salvei, fechei e reabri minha apresentação de slides do PowerPoint uma vez, o PowerPoint simplesmente decide ignorar o código na sub-rotina.

Alguém tem alguma sugestão sobre o que posso fazer? Talvez uma maneira de resolver um dos problemas mencionados acima? Estou usando o PowerPoint 2013 no Windows 8.1.

Aqui está o código que quero 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

Responder1

Dim CS As Slide
Set CS = ActivePresentation.SlideShowWindow.View.Slide

If CS.SlideIndex < 66 And CS.SlideIndex > 25 Then
'''
End If

Tento verificar se estou no slide necessário SlideIndexe, em seguida, executo umIf Condition

informação relacionada