2012-04-27 19 views
6

Per poter utilizzare l'evento SlideShowBegin in PowerPoint, è necessario disporre di un modulo di classe configurato nel seguente modo:Powerpoint VBA App_SlideShowBegin

Public WithEvents App As Application 

    Private Sub App_SlideShowBegin(ByVal Wn As SlideShowWindow) 
     MsgBox "SlideShowBegin" 
    End Sub 

Poi, all'interno di un modulo non-classe, è necessario creare un oggetto di quel tipo e impostare l'App su Applicazione.

Dim X As New Class1 

Sub InitializeApp() 
Set X.App = Application 
End Sub 

Ora, l'unico problema che ho è, se non chiamato manualmente InitializeApp con il menu macro in PowerPoint, gli eventi non funzionano. Devi chiamare questo sub prima che tutto possa essere chiamato all'inizio di una presentazione INCLUSO questo sub.

Come posso chiamare il sub prima di eseguire il mio powerpoint? C'è un modo migliore per farlo?

EDIT:

Ho provato con Class_Initialize ma solo viene chiamato una volta che è prima usato o si effettua una dichiarazione come Dim X as Class1; X = new Class1

+1

In genere i gestori di eventi vengono installati come parte di un componente aggiuntivo, in cui si inizializza la classe nella subroutine Auto_Open, che viene sempre eseguita quando viene caricato il componente aggiuntivo. Se si desidera includere un gestore di eventi in una singola presentazione, un modo per indurlo a init è includere una forma che, quando si passa con il mouse o si fa clic su una macro, che è il proprio gestore di eventi e passa alla diapositiva successiva. –

+0

Puoi postare questo come risposta, poiché questo è il modo in cui finirò per farlo. –

+0

Fatto. Grazie per avermi fatto sapere che ha funzionato. –

risposta

1

Di solito i gestori di eventi vengono installati come parte di un componente aggiuntivo, dove avresti inizializzato la classe nella subroutine Auto_Open, che viene sempre eseguita quando viene caricato il componente aggiuntivo. Se si desidera includere un gestore di eventi in una singola presentazione, un modo per indurlo a init è includere una forma che, quando si passa con il mouse o si fa clic su una macro, che è il proprio gestore di eventi e passa alla diapositiva successiva.

+0

Questo va bene per la maggior parte degli eventi che devono essere intrappolati, ma per quanto riguarda l'evento SlideShowBegin? Voglio attivare il codice da eseguire non appena inizia la presentazione, ma questa soluzione richiede l'avvio della presentazione per attivare il codice che consente di riconoscere gli eventi. Sembra un Catch-22. – DRC

Problemi correlati