Ескертпе
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Жүйеге кіруді немесе каталогтарды өзгертуді байқап көруге болады.
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Каталогтарды өзгертуді байқап көруге болады.
Происходит при изменении данных в проекте. Действие, затрагивающее сразу несколько элементов, считается одним изменением.
Синтаксис
выражение. Change( _pj_ )
Выражение Переменная, представляющая объект Project .
Параметры
| Имя | Обязательный или необязательный | Тип данных | Описание |
|---|---|---|---|
| Pj | Обязательный | Проект | Измененный проект. |
Возвращаемое значение
Nothing
Замечания
Событие Change не возникает для таких действий, как переключение представлений, применение фильтров, изменение форматирования и т. д.
События проекта не возникают, когда проект внедрен в другой документ или приложение.
Пример
В следующем примере показано, как событие ProjectTaskNew может перехватывать события уровня проекта. В этом случае обработчик событий App_ProjectTaskNew задает глобальную переменную ProjTaskNew , которую использует обработчик событий Change . Используйте аналогичный код с событиями ProjectResourceNew и ProjectAssignmentNew .
- Создайте модуль класса 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
- В отдельный модуль вставьте следующий код:
Option Explicit
Dim X As New EventClassModule
Sub Initialize_App()
Set X.App = MSProject.Application
Set X.Proj = Application.ActiveProject
End Sub
Выполните процедуру Initialize_App , чтобы начать прослушивание событий.
Создайте задачу. Обработчик событий отображает окно сообщения при каждом добавлении новой задачи.
Поддержка и обратная связь
Есть вопросы или отзывы, касающиеся Office VBA или этой статьи? Руководство по другим способам получения поддержки и отправки отзывов см. в статье Поддержка Office VBA и обратная связь.