2012-04-27 9 views
6

Để sử dụng các sự kiện SlideShowBegin trong Powerpoint, bạn cần phải có một mô-đun lớp cấu hình theo cách sau:Powerpoint VBA App_SlideShowBegin

Public WithEvents App As Application 

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

Sau đó, bên trong một mô-đun không lớp, bạn phải tạo một đối tượng thuộc loại đó và đặt Ứng dụng thành Ứng dụng.

Dim X As New Class1 

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

Bây giờ, vấn đề duy nhất tôi có là, nếu bạn không tự gọi là InitializeApp với Menu macro trong Powerpoint, các sự kiện không hoạt động. Bạn phải gọi phụ này trước khi bất cứ điều gì có thể được gọi ở đầu trình chiếu BAO GỒM phụ này.

Làm cách nào tôi có thể gọi về phụ này trước khi chạy powerpoint? Có cách nào tốt hơn để làm điều này?

EDIT:

Tôi đã cố gắng sử dụng Class_Initialize nhưng nó chỉ được gọi khi nó lần đầu tiên được sử dụng hoặc bạn thực hiện một tuyên bố như Dim X as Class1; X = new Class1

+1

Thông thường trình xử lý sự kiện được cài đặt như một phần của bổ trợ, nơi bạn sẽ khởi tạo lớp trong chương trình con Auto_Open, luôn chạy khi bổ trợ tải. Nếu bạn muốn bao gồm một trình xử lý sự kiện trong một bản trình bày duy nhất, một cách để làm cho nó bắt đầu là bao gồm một hình dạng, khi được di chuột qua hoặc nhấp vào một macro, trong đó sẽ xử lý sự kiện của bạn và chuyển sang trang trình bày tiếp theo. –

+0

Bạn có thể đăng bài này làm câu trả lời vì đây là cách tôi sẽ kết thúc. –

+0

Xong. Cảm ơn vì đã cho tôi biết nó hoạt động. –

Trả lời

1

Thường xử lý sự kiện được cài đặt như một phần của một add-in, nơi bạn muốn khởi tạo lớp trong chương trình con Auto_Open, nó luôn chạy khi tải bổ trợ. Nếu bạn muốn bao gồm một trình xử lý sự kiện trong một bản trình bày duy nhất, một cách để làm cho nó bắt đầu là bao gồm một hình dạng, khi được di chuột qua hoặc nhấp vào một macro, trong đó sẽ xử lý sự kiện của bạn và chuyển sang trang trình bày tiếp theo.

+0

Đó là điều tốt cho hầu hết các sự kiện cần phải bị mắc kẹt, nhưng làm thế nào về sự kiện SlideShowBegin? Tôi muốn kích hoạt mã để thực thi ngay sau khi trình chiếu bắt đầu, nhưng giải pháp này yêu cầu trình chiếu bắt đầu để kích hoạt mã khiến các sự kiện được nhận dạng. Có vẻ như một chiếc Catch-22. – DRC