Compartir a través de


Evento Project.Change (Project)

Se produce al cambiar los datos del proyecto. Una acción que afecte a varios elementos a la vez se considera un único cambio.

Sintaxis

expresión. Change( _pj_ )

Expresión Variable que representa un objeto Project .

Parameters

Nombre Obligatorio/opcional Tipo de datos Descripción
pj Obligatorio Project Proyecto que ha cambiado.

Valor devuelto

Nothing

Comentarios

El evento Change no se produce en acciones como cambio de vista, la aplicación de filtros, cambiar el formato y así sucesivamente.

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

Ejemplo:

En el siguiente ejemplo se muestra cómo el evento ProjectTaskNew puede interceptar los eventos de nivel de proyecto. En este caso, el controlador de eventos App_ProjectTaskNew establece la variable ProjTaskNew global que usa el controlador de eventos de cambio. Use código similar con los eventos ProjectResourceNew y ProjectAssignmentNew .

  1. Cree un nuevo módulo de clase denominado EventClassModule y, a continuación, inserte el código siguiente:
Option Explicit 
Option Base 1 

Public WithEvents App As Application 
Public WithEvents Proj As Project 

Dim NewTaskIDs() As Integer 
Dim NumNewTasks As Integer 

Dim ProjTaskNew As Boolean 

Private Sub App_ProjectTaskNew(ByVal pj As Project, ByVal ID As Long) 
  NumNewTasks = NumNewTasks + 1 

  If ProjTaskNew Then 
      ReDim Preserve NewTaskIDs(NumNewTasks) As Integer 
  Else 
      ReDim NewTaskIDs(NumNewTasks) As Integer 
  End If 

  NewTaskIDs(NumNewTasks) = ID 

  ProjTaskNew = True 
End Sub 

Private Sub Proj_Change(ByVal pj As Project) 
Dim NewTaskID As Variant 

  If ProjTaskNew Then 
      For Each NewTaskID In NewTaskIDs 
          MsgBox "New Task Name: " & ActiveProject.Tasks.UniqueID(NewTaskID).Name 
      Next NewTaskID 

      NumNewTasks = 0 

      ProjTaskNew = False 
  End If 
End Sub
  1. En otro módulo, inserte el código siguiente:
Option Explicit 

Dim X As New EventClassModule 

Sub Initialize_App() 
  Set X.App = MSProject.Application 
  Set X.Proj = Application.ActiveProject 
End Sub
  1. Ejecute el procedimiento Initialize_App para comenzar a escuchar los eventos.

  2. Cree una nueva tarea. El controlador de eventos muestra un cuadro de mensaje siempre que se agrega una nueva tarea.

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.