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.