Verwenden von Ereignissen mit Anwendungs- und Projektobjekten
Ereignisprozeduren können auf der Anwendungsebene oder der Projektebene erstellt werden. Beispielsweise tritt das Ereignis Activate auf der Projektebene ein, wenn das Projekt aktiviert wird, und das Ereignis NewProject auf der Anwendungsebene wenn ein neues Projekt erstellt wird.
Ereignisprozeduren im Objekt Project sind für jedes geöffnete Projekt verfügbar. Zum Erstellen von Ereignisprozeduren für das Objekt Application muss ein neues Objekt mithilfe des Schlüsselworts WithEvents in einem Klassenmodul erstellt werden. In den folgenden Schritten wird das Erstellen und Testen eines einfachen Anwendungsereignishandlers veranschaulicht:
Wählen Sie im Visual Basic-Editor im Optionsmenü für VBAProject die Option Einfügen und dann die Option Klassenmodul aus, um eine Klasse mit dem Namen Klasse1 zu erstellen. Sie können das Klassenmodul im Bereich Eigenschaften umbenennen. In den folgenden Beispielen trägt die Klasse den Namen TestKlasse.
Fügen Sie den folgenden Code in das Modul TestKlasse ein.
Option Explicit
Public WithEvents oApp As Application
Private Sub oApp_NewProject(ByVal pj As Project)
MsgBox "You created the " & pj.Name & " project."
End Sub
Private Sub Class_Initialize()
' Add class initialization statements here, if needed.
End Sub
- Öffnen Sie das Modul DiesesProjekt, und fügen Sie den folgenden Code ein.
Option Explicit
Private tClass As New TestClass
Sub TestNewProjectEvent()
Set tClass.oApp = Application
tClass.oApp.Projects.Add
Projects.Add
End Sub
- Run the TestNewProjectEvent macro. The macro calls the Projects.Add method twice—once through the TestClass object and once directly through the Application object. When the Project application creates the first project, the result is a Microsoft Project dialog box with the message You created the Project2 project. Wenn Sie auf OK klicken, erstellt Project das zweite Projekt und zeigt ein weiteres Dialogfeld mit der Meldung Sie haben das Projekt "Projekt3" erstellt an.
Wichtig Registrieren Sie für Ereignisse auf Anwendungsebene Ereignishandler, nachdem Sie festgelegt haben Application.Visible = True
.
Wenn Sie Project aus einer anderen Anwendung instanziieren und ein Ereignis auf Anwendungsebene registrieren, bevor Sie die Visible -Eigenschaft des Application -Objekts auf Truefestlegen, funktionieren die Eigenschaften und Methoden von untergeordneten Objekten von Application nicht. So kann beispielsweise auf Application.ActiveProject.Name
nicht zugegriffen werden.
Hinweis Wenn Ereigniscode in der globalen Datei (Global.mpt) vorhanden ist, kann dieser in Ihrem Projekt unerwartet ausgeführt oder blockiert werden.
Wenn sowohl in den globalen als auch in den Projektdateien Code vorhanden ist, wird nur der Code im Projektereignis ausgeführt.
Wenn der Code für ein Ereignis nicht in einem Projekt vorhanden ist, wohl aber in der globalen Datei, wird der Code im globalen Ereignis ausgeführt.
Wenn Code für eins der drei Ereignisse Application.ProjectBeforeClose, Application.ProjectBeforeSave, oder Project.Open in der globalen Datei vorhanden ist, nicht jedoch in der Projektdatei, wirkt sich dies sowohl auf die globale als auch auf die Projektdatei aus. Wenn Code für diese Ereignis sowohl in der globalen als auch in der Projektdatei vorhanden ist, wirkt sich der Code in der globalen Datei auf die globale Datei und der Code in der Projektdatei auf die Projektdatei aus.
Support und Feedback
Haben Sie Fragen oder Feedback zu Office VBA oder zu dieser Dokumentation? Unter Office VBA-Support und Feedback finden Sie Hilfestellung zu den Möglichkeiten, wie Sie Support erhalten und Feedback abgeben können.