Evento Application.ProjectBeforeTaskChange (Project)

Ocorre antes que um usuário altere o valor de um campo de tarefa.

Sintaxe

expressão. ProjectBeforeTaskChange( _tsk_, _Field_, _NewVal_, _Cancel_ )

expressão Uma variável que representa um Aplicativo objeto.

Parâmetros

Nome Obrigatório/Opcional Tipo de dados Descrição
tsk Obrigatório Tarefa A tarefa cujo campo está sendo alterado.
Field Obrigatório Long O campo está sendo alterado. Se mais de um campo for alterado pelo usuário, o evento será acionado para cada campo alterado. Pode ser uma das constantes PjField.
NewVal Obrigatório Variante O novo valor do campo especificado com Field.
Cancel Obrigatório Boolean False quando o evento ocorre. Se o procedimento de evento define este argumento como True, o valor do campo especificado com Field não é alterado.

Comentários

Eventos de projeto não ocorrem quando o projeto está inserido em outro documento ou aplicativo.

O evento ProjectBeforeTaskChange não ocorre quando os dados de escala de tempo são alterados, quando os dados de restrição no formulário de detalhes da tarefa é alterada, quando uma tarefa é dividida manipulando sua barra de tarefas no gráfico de Gantt, quando são feitas alterações ao número de estrutura de tópicos ou de nível de estrutura de tópicos quando uma linha de base é salva, quando uma linha de base é limpa, quando uma linha inteira de tarefa é colada, durante operações de pool de recursos , durante a inserção ou remoção de um subprojeto ou quando são feitas alterações usando um formulário personalizado. Para obter mais informações e código de exemplo para a criação e teste de um manipulador de eventos, consulteUsando eventos com objetos de aplicativo e de projeto.

Exemplo

O exemplo a seguir informa ao usuário quando aumenta a duração de uma tarefa e por quanto. Este exemplo requer um novo módulo de classe e código adicional para que ele tenha um efeito.

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

Suporte e comentários

Tem dúvidas ou quer enviar comentários sobre o VBA para Office ou sobre esta documentação? Confira Suporte e comentários sobre o VBA para Office a fim de obter orientação sobre as maneiras pelas quais você pode receber suporte e fornecer comentários.