Change Event
Occurs when a change is made to data in the project. An action affecting several items at once is considered to be one change.
Syntax
Private Sub Project_Change(ByVal pj As MSProject.Project)
pj The project that changed.
Remarks
The Change event does not occur for actions such as switching views, applying filters, changing formatting, and so on.
Project events do not occur when the project is embedded in another document or application.
Example
The following example shows how the ProjectTaskNew event can be used to listen to Project-level events (in this case, the Change event). The same can also be applied to ProjectResourceNew and ProjectAssignmentNew events as well.
Create a new class module called "EventClassModule." Insert the following code:
Option Explicit Option Base 1 Public WithEvents App As Application Public WithEvents Proj As Project Dim NewTaskIDs() As Integer Dim NumNewTasks As Integer Dim ProjTaskNew As Boolean Private Sub App_ProjectTaskNew(ByVal pj As Project, ByVal ID As Long) NumNewTasks = NumNewTasks + 1 If ProjTaskNew Then ReDim Preserve NewTaskIDs(NumNewTasks) As Integer Else ReDim NewTaskIDs(NumNewTasks) As Integer End If NewTaskIDs(NumNewTasks) = ID ProjTaskNew = True End Sub Private Sub Proj_Change(ByVal pj As Project) Dim NewTaskID As Variant If ProjTaskNew Then For Each NewTaskID In NewTaskIDs MsgBox "New Task Name: " & ActiveProject.Tasks.UniqueID(NewTaskID).Name Next NewTaskID NumNewTasks = 0 ProjTaskNew = False End If End Sub
In a separate module, insert the following code:
Option Explicit Dim X As New EventClassModule Sub Initialize_App() Set X.App = MSProject.Application Set X.Proj = Application.ActiveProject End Sub
Run the Initialize_App procedure to start listening to the events.
Create a new task, and the event causes a message box to pop up every time a new task is added.
Applies to | Project Object, Projects Collection Object