Project.Change 事件 (Project)

当对项目中的数据进行更改时发生。 一个能立即影响到几项的操作被认为是一次更改。

语法

expressionChange( _pj_ )

表达 一个代表 Project 对象的变量。

参数

名称 必需/可选 数据类型 说明
pj 必需 Project 已更改的项目。

返回值

Nothing

备注

更改 事件 does 不进行操作,如切换视图应用筛选器、 更改格式等。

当项目嵌入到另一个文档或应用程序中时,不会发生项目事件。

示例

下面的示例演示如何 ProjectTaskNew 事件可捕获项目级事件。 在这种情况下, App_ProjectTaskNew 事件处理程序设置 更改 事件处理程序使用的全局 ProjTaskNew 变量。 将类似的代码用于 ProjectResourceNewProjectAssignmentNew 事件。

  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 支持和反馈,获取有关如何接收支持和提供反馈的指南。