Как вы запускаете код VBA при смене слайдов в PowerPoint?

Я пытаюсь сбросить содержимое некоторых текстовых полей и надписей при смене слайдов, но изо всех сил пытаюсь заставить его работать. Я придумал это после того, как занялся поиском и поиском, но, похоже, это не сработало. Я пытаюсь использовать событие OnSlideShowPageChange в PowerPoint 2013 и 2016, но, похоже, это не имеет никакого эффекта. Я не привык работать с PowerPoint vba, поэтому я могу сделать что-то совершенно не так.

Редактировать: мне удалось найти альтернативный способ сброса текста метки. Мне удалось восстановить его, когда пользователь фокусируется на одном из текстовых полей или наводит указатель мыши на ярлык. Но мне все еще интересно узнать ответ на этот вопрос; Я не уверен, почему мой код не работает.

Я буду признателен, если кто-нибудь сможет указать на любые проблемы и как их исправить.

Вот что у меня так далеко:

Public Sub OnSlideShowPageChange(ByVal Wn As SlideShowWindow)
    Dim Sld As Slide

    If Wn.View.CurrentShowPosition = 9 Then
        'Perform Updates for slide #9
        Set Sld = Application.ActivePresentation.Slides(9)
        Sld.Shapes(TextBox_Form_Name).TextFrame.TextRange.Text = ""
        Sld.Shapes(TextBox_Form_Email).TextFrame.TextRange.Text = ""
        Sld.Shapes(TextBox_Form_Message).TextFrame.TextRange.Text = ""
        Sld.Shapes(Label_Form_Info).TextFrame.TextRange.Text = ""
    End If

    If Wn.View.CurrentShowPosition = 18 Then
        'Perform Updates for slide #18
        Set Sld = Application.ActivePresentation.Slides(18)
        Sld.Shapes(TextBox_Form_Name).TextFrame.TextRange.Text = ""
        Sld.Shapes(TextBox_Form_Email).TextFrame.TextRange.Text = ""
        Sld.Shapes(TextBox_Form_Message).TextFrame.TextRange.Text = ""
        Sld.Shapes(Label_Form_Info).TextFrame.TextRange.Text = ""
    End If
End Sub

Я также попытался поместить имена форм в речевые метки, но это, похоже, не помогает.

Кстати, мне нужен код для работы в PowerPoint 2013 и 2016.

1 ответ

Вот ответ из FAQ по PowerPoint на http://www.pptfaq.com/

Предположим, что ваш код, который зависит от события OnSlideShowPageChange( SHW as SlideshowWindow), работает при запуске из VBA или при запуске презентации из PowerPoint, но не при запуске шоу, дважды щелкнув значок PPS или PPSM. Слайд-шоу запускается нормально, но код в вашей подпрограмме OnSlideShowPageChange никогда не запускается.

Решение Добавьте элемент управления Active-X (со вкладки "Разработчик") на первый слайд (перетащите его прямо со слайда, если вы не хотите, чтобы он был виден во время показа слайдов).

Это заставляет VBA инициализироваться при запуске презентации, поэтому событие запускается и ваш код выполняется.

Другие вопросы по тегам