当我更换幻灯片时,我正在尝试重置某些文本框和标签的内容,但我很难让它工作。经过大量的谷歌搜索和搜索后,我想出了这个,但它似乎没有用。我正在尝试在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中都有效。
答案 0 :(得分:0)
假设您的代码依赖于OnSlideShowPageChange(SHW as SlideshowWindow)事件,当从VBA内部运行或从PowerPoint中启动演示文稿时有效,但是当您通过双击PPS或PPSM的图标启动该节目时则不行。幻灯片放映正常启动,但OnSlideShowPageChange子例程中的代码永远不会运行。
解 在第一张幻灯片上添加一个Active-X控件(来自“开发人员”选项卡)(如果您不想在幻灯片放映期间看到它,请将其拖离幻灯片)。
这会强制VBA在演示文稿启动时进行初始化,因此会触发事件并运行代码。