Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
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 .
- 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
- 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
Ejecute el procedimiento Initialize_App para comenzar a escuchar los eventos.
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.