powerpoint VBA公共变量在幻灯片之间不可用

powerpoint VBA公共变量在幻灯片之间不可用,vba,global-variables,powerpoint,Vba,Global Variables,Powerpoint,我在powerpoint vba模块中有以下代码。它开始工作,直到下一张幻灯片,然后什么都没有,即使变量已设置。在幻灯片1中,msgbox会告诉我幻灯片总数,但在幻灯片2中,msgbox会告诉我0。在幻灯片1上设置变量TotalSlides时,它是如何在幻灯片之间重置的?我错过了什么 Public TotalSlides As Integer Public Sub OnSlideShowPageChange(ByVal Wn As SlideShowWindow) 'Gets tota

我在powerpoint vba模块中有以下代码。它开始工作,直到下一张幻灯片,然后什么都没有,即使变量已设置。在幻灯片1中,msgbox会告诉我幻灯片总数,但在幻灯片2中,msgbox会告诉我0。在幻灯片1上设置变量TotalSlides时,它是如何在幻灯片之间重置的?我错过了什么

Public TotalSlides As Integer

Public Sub OnSlideShowPageChange(ByVal Wn As SlideShowWindow)

   'Gets total slides at slide 1, saves to public var TotalSlides
   If Wn.View.CurrentShowPosition = 1 Then
      With ActivePresentation
        TotalSlides = .Slides(.Slides.Count).SlideNumber
      End With
   End If


   'Test output of Public variable
   MsgBox TotalSlides, vbOKOnly

End Sub

在Docs.SO上。如果我理解正确(不熟悉PPT对象模型),您的公共变量将在类模块(幻灯片对象)中声明。如果你需要一个全局变量,你需要在一个标准模块的全局范围内声明它。谢谢你的回复。我应该说,这个变量是在一个标准模块中声明的,确切地说是module1。这就是为什么我对它不起作用感到困惑的原因。可能还包括您用于设置事件处理的代码,以防这些代码与我在PowerPoint 2016(PC)x32上的预期效果相关。我假设这是项目中唯一的代码,并且TotalSlides没有在VBA项目的其他地方或项目外部被操纵?当然,由于代码被放置在SlideShowPageChange的伪事件中,每次幻灯片放映更改幻灯片时,实际上都会重置变量,但它应该(对我来说)重置为幻灯片组中的幻灯片总数,在本例中始终是相同的数。@Tim,这就是实现本例中需要完成的所有代码。