0

当我更改幻灯片时,我正在尝试重置某些文本框和标签的内容,但我很难让它发挥作用。经过大量的谷歌搜索和搜索后,我想出了这个,但它似乎不起作用。我正在尝试在 PowerPoint 2013 和 2016 中使用 OnSlideShowPageChange 事件,但它似乎没有效果。我不习惯使用 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 中都可以工作。

4

1 回答 1

0

这是来自http://www.pptfaq.com的 PowerPoint 常见问题解答的答案

假设您的代码依赖于 OnSlideShowPageChange( SHW as SlideshowWindow ) 事件在从 VBA 中运行或从 PowerPoint 中启动演示文稿时有效,但在您通过双击 PPS 或 PPSM 图标开始显示时无效。幻灯片放映正常启动,但 OnSlideShowPageChange 子例程中的代码从不运行。

解决方案 在第一张幻灯片上添加一个 Active-X 控件(从“开发人员”选项卡)(如果您不希望它在幻灯片放映期间可见,请将其拖出幻灯片)。

这会强制 VBA 在演示文稿开始时进行初始化,因此会触发事件并运行您的代码。

于 2017-12-17T22:02:23.527 回答