Application.ProjectBeforeTaskChange 事件 (Project)
在用户更改任务域的值前发生。
语法
expression。 ProjectBeforeTaskChange
( _tsk_
, _Field_
, _NewVal_
, _Cancel_
)
expression:表示 Application 对象的变量。
参数
名称 | 必需/可选 | 数据类型 | 说明 |
---|---|---|---|
tsk | 必需 | Task | 要更改其域的任务。 |
Field | 必需 | Long | 要更改的域。 如果用户更改了多个域,将为更改的每个域引发该事件。 可以是 PjField 常量之一。 |
NewVal | 必需 | Variant | 与 字段 指定的字段的新值。 |
Cancel | 必需 | Boolean | 假 的事件发生时。 如果事件过程将此参数设置为 True , 字段 指定字段的值不会更改。 |
备注
当项目嵌入到另一个文档或应用程序中时,不会发生项目事件。
ProjectBeforeTaskChange 事件不会发生时间刻度数据发生更改,当任务详细信息窗体中的限制数据发生更改,通过操作甘特图中,在其任务条形图时更改大纲级别或大纲数字,保存了比较基准后,清除比较基准后,资源池操作过程粘贴整个任务行时拆分任务时当插入或删除子项目,或者当使用自定义窗体进行更改。 有关创建和测试事件处理程序的详细信息和示例代码,请参阅 使用 Application 和 Project 对象事件。
示例
下面的示例提示用户增加了任务的持续时间和程度。 此示例需要一个新的类模块和附加代码以使它能够产生影响。
Private Sub App_ProjectBeforeTaskChange(ByVal tsk As Task, ByVal Field As PjField, _
ByVal NewVal As Variant, Cancel As Boolean)
Dim TaskDuration As Long
TaskDuration = Val(NewVal) * 480 ' Convert days to minutes
If Field = pjTaskDuration And TaskDuration > tsk.Duration Then
If (TaskDuration - tsk.Duration) \ 480 < 1 Then
MsgBox "The task " & Chr$(34) & tsk.Name & Chr$(34) & " is now " & _
(TaskDuration - tsk.Duration) / 480 & (TaskDuration - tsk.Duration) \ 480 & _
" day(s) longer."
Else
MsgBox "The task " & Chr$(34) & tsk.Name & Chr$(34) & " is now " & _
(TaskDuration - tsk.Duration) / 480 & " day(s) longer."
End If
End If
End Sub
支持和反馈
有关于 Office VBA 或本文档的疑问或反馈? 请参阅 Office VBA 支持和反馈,获取有关如何接收支持和提供反馈的指南。