Application.ProjectBeforeTaskChange-Ereignis (Project)

Tritt ein, bevor der Benutzer den Wert eines Vorgangsfelds ändert.

Syntax

Ausdruck. ProjectBeforeTaskChange( _tsk_, _Field_, _NewVal_, _Cancel_ )

expression Eine Variable, die ein Application-Objekt darstellt.

Parameter

Name Erforderlich/Optional Datentyp Beschreibung
tsk Erforderlich Task Der Vorgang, dessen Feld geändert wird.
Field Erforderlich Long Das Feld geändert wird. Wenn der Benutzer mehrere Felder ändert, wird dieses Ereignis für jedes geänderte Feld ausgelöst. Dies kann eine der folgenden PjField -Konstanten sein:
NewVal Erforderlich Variant Der neue Wert für das mit Field angegebene Feld.
Cancel Erforderlich Boolean False, Wenn das Ereignis auftritt. Wenn die Ereignisprozedur dieses Argument auf True festgelegt wird, wird der Wert für das mit Field angegebene Feld nicht geändert werden.

HinwBemerkungeneise

Projektereignisse treten nicht auf, wenn das Projekt in ein anderes Dokument oder eine andere Anwendung eingebettet ist.

ProjectBeforeTaskChange -Ereignis tritt nicht auf, wenn Zeitskalendaten Einschränkung Daten in den Vorgang: Einzelheiten ändert, wenn eine Aufgabe durch Bearbeiten der Vorgangsbalken im Balkendiagramm, wenn Änderungen, zur Ebene oder Gliederung Anzahl Gliederung vorgenommen werden, wenn Sie einen Basisplan speichern, wenn ein Basisplan gelöscht wird, wenn eine gesamte Vorgangszeile, während Resource Pool Vorgänge eingefügt wird, geteilt ist, ändert, , beim Einfügen und Entfernen eines Teilprojekts oder wenn Änderungen mithilfe einer benutzerdefinierten Maske vorgenommen wurden. Weitere Informationen und Beispielcode zum Erstellen und Testen eines Ereignishandlers finden Sie unter Verwenden von Ereignissen mit Anwendungs- und Projektobjekten.

Beispiel

Im folgenden Beispiel wird der Benutzer darüber informiert, wenn die Dauer eines Vorgangs erhöht und um wie viel. Dieses Beispiel erfordert ein neues Klassenmodul und von zusätzlichem Code dafür wirksam.

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

Support und Feedback

Haben Sie Fragen oder Feedback zu Office VBA oder zu dieser Dokumentation? Unter Office VBA-Support und Feedback finden Sie Hilfestellung zu den Möglichkeiten, wie Sie Support erhalten und Feedback abgeben können.