Compartir a través de


Evento Application.ProjectBeforeTaskChange (Project)

Se produce antes de que el usuario cambie el valor de un campo de tareas.

Sintaxis

expresión. ProjectBeforeTaskChange( _tsk_, _Field_, _NewVal_, _Cancel_ )

expresión Variable que representa un objeto Application.

Parámetros

Nombre Obligatorio/opcional Tipo de datos Descripción
tsk Obligatorio Task Tarea cuyo campo se va a cambiar.
Field Obligatorio Long El campo que se está cambiando. Si el usuario cambia más de un campo, el evento se activa para cada campo modificado. Puede ser una de las constantes de PjField.
NewVal Obligatorio Variant El nuevo valor para el campo especificado por Field.
Cancel Obligatorio Boolean False cuando se produce el evento. Si el procedimiento de evento establece este argumento en True, no se cambia el valor del campo especificado por Field.

Comentarios

Los eventos de proyecto no se producen cuando el proyecto está incrustado en otro documento o aplicación.

ProjectBeforeTaskChange (evento) no se produce cuando cambian los datos de escala temporal, cuando cambian los datos de restricción en el formulario Detalles de tarea, cuando se divide una tarea manipulando su barra de tareas en el diagrama de Gantt, cuando se realizan cambios en el número de esquema o un nivel de esquema cuando se guarda una línea de base, cuando se borra una línea de base, cuando se pega una fila de la tarea completa, durante las operaciones del fondo de recursos , cuando se inserta o se quita un subproyecto, o cuando se han efectuado cambios mediante un formulario personalizado. Para obtener más información, vea el tema sobre el uso de eventos con los objetos Application y Project.

Ejemplo:

En el siguiente ejemplo se informa al usuario cuando se aumenta la duración de una tarea y cuánto. En este ejemplo se requiere un nuevo módulo de clase y código adicional para que surta efecto.

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

Soporte técnico y comentarios

¿Tiene preguntas o comentarios sobre VBA para Office o esta documentación? Vea Soporte técnico y comentarios sobre VBA para Office para obtener ayuda sobre las formas en las que puede recibir soporte técnico y enviar comentarios.