簡體   English   中英

在PowerPoint中更改幻燈片時如何運行vba代碼?

[英]How do you run vba code when changing slides in powerpoint?

更換幻燈片時,我試圖重置一些文本框和標簽的內容,但我正努力使其工作。 經過大量的谷歌搜索和搜索后,我想出了這個方法,但是它似乎沒有用。 我正在嘗試在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中使用。

這是來自http://www.pptfaq.com的PowerPoint常見問題解答的答案

假設依賴於OnSlideShowPageChange(SHW as SlideshowWindow)事件的代碼在VBA中運行時或在PowerPoint中啟動演示文稿時起作用,但在雙擊PPS或PPSM圖標開始顯示時不起作用。 幻燈片放映正常啟動,但是OnSlideShowPageChange子例程中的代碼永遠不會運行。

解決方案在第一張幻燈片上添加Active-X控件(從“開發人員”選項卡中)(如果您不希望在幻燈片放映過程中看到它,請將其拖離幻燈片)。

這將強制VBA在演示文稿開始時進行初始化,因此將觸發事件並運行您的代碼。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM