Поделиться через


Событие Project.Change (Project)

Происходит при изменении данных в проекте. Действие, затрагивающее сразу несколько элементов, считается одним изменением.

Синтаксис

выражение. Change( _pj_ )

Выражение Переменная, представляющая объект Project .

Параметры

Имя Обязательный или необязательный Тип данных Описание
Pj Обязательный Проект Измененный проект.

Возвращаемое значение

Nothing

Замечания

Событие Change не возникает для таких действий, как переключение представлений, применение фильтров, изменение форматирования и т. д.

События проекта не возникают, когда проект внедрен в другой документ или приложение.

Пример

В следующем примере показано, как событие ProjectTaskNew может перехватывать события уровня проекта. В этом случае обработчик событий App_ProjectTaskNew задает глобальную переменную ProjTaskNew , которую использует обработчик событий Change . Используйте аналогичный код с событиями ProjectResourceNew и ProjectAssignmentNew .

  1. Создайте модуль класса EventClassModule и вставьте следующий код:
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
  1. В отдельный модуль вставьте следующий код:
Option Explicit 

Dim X As New EventClassModule 

Sub Initialize_App() 
  Set X.App = MSProject.Application 
  Set X.Proj = Application.ActiveProject 
End Sub
  1. Выполните процедуру Initialize_App , чтобы начать прослушивание событий.

  2. Создайте задачу. Обработчик событий отображает окно сообщения при каждом добавлении новой задачи.

Поддержка и обратная связь

Есть вопросы или отзывы, касающиеся Office VBA или этой статьи? Руководство по другим способам получения поддержки и отправки отзывов см. в статье Поддержка Office VBA и обратная связь.