1

Мне бы хотелось, чтобы простой макрос запускался всякий раз, когда я вхожу в новый слайд, независимо от того, попал ли я туда обычным нажатием кнопки "вперед" или по ссылке в слайд-шоу. Это возможно? Я искал какой-то объект "страница" или "слайд", к которому я мог бы добавить действие "ввод" или "загрузить", но если оно существует, я еще не нашел его.

Цель состоит в том, чтобы установить глобальную переменную "предыдущий слайд", которая используется для реализации кнопки "Назад". Обратите внимание, что эта кнопка возвращает пользователя к последнему слайду, на котором он был, не обязательно по порядку. То есть на слайде № 4 я щелкаю ссылку на слайде № 101 в приложении, затем нажимаю кнопку "Назад", и я возвращаюсь к № 4, а не к № 100. Это прекрасно работает, мне просто нужно знать, на каком слайде я был.

В качестве обходного пути я добавляю невидимый объект в мастер слайдов с помощью действия при наведении курсора, чтобы вызвать этот макрос. Это должно сработать, но это выглядит некрасиво.

Есть ли способ лучше? Спасибо!


Вот код, который работал:

 Public PreviousSlideIndex As Long
 Public CurrentSlideIndex As Long

 Public Sub OnSlideShowPageChange(ByVal Window As SlideShowWindow)
      PreviousSlideIndex = CurrentSlideIndex
      CurrentSlideIndex = ActivePresentation.SlideShowWindow.View.Slide.SlideIndex
 End Sub

 Sub ReturnToPreviousSlide()
      ActivePresentation.SlideShowWindow.View.GoToSlide PreviousSlideIndex
 End Sub

Я установил ReturnToPreviousSlide для действия OnClick для моей кнопки «Назад», и все хорошо.

Вы можете сделать это немного сложнее со стеком предыдущих страниц, позволяя пользователям просматривать несколько слайдов и возвращаться туда, откуда они пришли.

1 ответ1

0

Я полагаю, что вы ищете событие SlideShowNextSlide , как описано на http://msdn.microsoft.com/en-us/library/ff745863.aspx:

Происходит непосредственно перед переходом к следующему слайду. Для первого слайда происходит сразу после события SlideShowBegin.

Пример включен в ссылку MSDN.

Согласно http://officeone.mvps.org/vba/run_macro_at_slide.html ("Запуск макроса VBA на определенном слайде"), существует также событие OnSlideShowPageChange , хотя я не смог найти никакой официальной документации для этого на MDSN. Однако по http://officeone.mvps.org/vba/events_version.html:

Происходит после показа нового слайда.

Это авто-макрос и не требует объявления какого-либо объекта. Он запускается, даже когда презентация, на которой размещены эти обработчики событий, не находится в режиме слайд-шоу.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .