Application.ProjectBeforeTaskChange 事件 (Project)

在用户更改任务域的值前发生。

语法

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