Herhangi bir slayt kaydı girdiğinde veya slayt bıraktığınızda makroyu çalıştırmayı sağlayan bir olay türü var mı?Powerpoint VBA'da "OnEnterSlide" veya "OnLeaveSlide" makrosu nasıl çalıştırılır?
cevap
SlideShowNextSlide veya OnSlideShowPageChange
Bu örnek SlideShowNextSlide olayı aşağıdaki slayt için slayt konumunu belirler http://msdn.microsoft.com/en-us/library/aa211571%28office.11%29.aspx
den http://officeone.mvps.org/vba/events_version.html
Kod numunenin tam listesini bulabilirsiniz.Sonraki slayt üç slaytta ise, örnek, işaretçisini kalemle değiştirir ve kalem rengi kırmızıdır.
Private Sub App_SlideShowNextSlide(ByVal Wn As SlideShowWindow)
Dim Showpos As Integer
Showpos = Wn.View.CurrentShowPosition + 1
If Showpos = 3 Then
With ActivePresentation.SlideShowSettings.Run.View
.PointerColor.RGB = RGB(255, 0, 0)
.PointerType = ppSlideShowPointerPen
End With
Else
With ActivePresentation.SlideShowSettings.Run.View
.PointerColor.RGB = RGB(0, 0, 0)
.PointerType = ppSlideShowPointerArrow
End With
End If
End Sub
Bu olayın gerçekten PowerPoint'in sürümüne bağlı olarak kullanılmasını eklemek istiyorum. Benim için (PP 2007) sonraki olay oldukça istikrarlı çalışır:
Sub OnSlideShowPageChange(ByVal objWindow As SlideShowWindow)
Debug.Print objWindow.View.Slide.SlideIndex ' you can use this to check which slide invokes the event
End Sub
Bu kod ek sınıf yapıları (PPTEvent) gerek yoktur. Ancak diğer etkinlikleri kullanmayı planlıyorsanız, bu sınıfın başlatılmasını OnSlideShowPageChange'a eklemek iyi bir fikirdir.
Lütfen dikkat, bu kod verilen görevin ilk kısmı ile başa çıkmaktadır - slayda girme. "Ne hakkında ayrılıyor?" Diye sorabilirsiniz. Eh, bu bir görelilik meselesi. Tek bir slayt içingirme nedir aynı anda için başka bir bırakıyor. Geçerli slaydı izlemek için objWindow.View.Slide.SlideIndex'u kullanın, önceki slaydın diziniyle karşılaştırın ve gerekli olanı bırakıp bırakmadığınıza karar verin.
Sadece girmek için. "Çıkış" –
üzerinde bir olay olup olmadığını bilmiyorum, bu http://stackoverflow.com/questions/2979950/how-to-automatically-trigger-the-app-object-initialization çalıştırarak tetiklemeye çalışıyorum - yürütme penceresinde -powerpoint ama işe yaramıyor. Bir şeyleri yanlış anladım mı? – user310291
Diğer soruda cevaplandı –