Я хотел бы добавить, что использование события действительно зависит от версии 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 , чтобы отследить текущий слайд, сравнить его с индексом предыдущего слайда и решить, оставили ли вы только что нужный.