Überblick
Code

Einen Vorgang so einbinden, dass er "auf Knopfdruck" automatisch das Enddatum des Vorgängers als Startdatum nimmt und das Startdatum des Nachfolgers als Enddatum. Dadurch wird die Dauer automatisch angepasst und der Vorgang füllt sozusagen die Lücke zwischen zwei Vorgängen.

dynamsichervorgang01

 dynamsichervorgang02

Ein mögliches Szenario: Ich plane im Beispiel von vorn nach hinten. Der Vorgang beginnt durch eine Anfang-Ende-Beziehung zwar direkt nach dem Vorgänger, aber der Nachfolger hat sich durch andere Abhängigkeiten weiter nach hinten verschoben. Der Vorgang 2, dem ich den Namen "Dynamischer Vorgang" gegeben habe, soll die Lücke zwischen diesen beiden Vorgängen ausfüllen.

Dafür habe ich einen kleinen VBA-Code geschrieben, der das macht. Den Code habe ich im nächsten Tab erklärt.

Code-Einbindung

Für Nicht-Programmierer habe ich am Beispiel Excel erklärt, wo und wie der Code eingebunden werden kann. Bei Project speichern Sie das Ganze am besten in der "Global.MPT". Danach das Speichern-Symbol anklicken und Ihnen steht der Code fortan immer zur Verfügung. Alles andere zum Einbinden des Codes finden Sie unter diesem Link:
https://www.time4mambo.de/office/fuer-nicht-programmierer-wie-und-wo-wird-vba-untergebracht.html

 

 Sub DynamischerVorgang()
'---------------------------------------------
' Passt Startdatum nach Ende des Vorläufers
' und das Enddatum nach Anfang des Nachfolgers
' dynamisch an.
'
' Axel Tüting - www.time4mambo.de
'---------------------------------------------

On Error Resume Next

Dim StartID As Long, EndID As Long

StartID = Application.ActiveCell.Task.Predecessors
EndID = Application.ActiveCell.Task.Successors
Application.ActiveCell.Task.Start = ActiveProject.Tasks(StartID).Finish
Application.ActiveCell.Task.Finish = ActiveProject.Tasks(EndID).Start

End Sub

 

Der Code ist recht überschaubar. Zunächst wird mit Application.ActiveCell.Task.Predecessors die ID des Vorläufers ermittelt und der Variablen StartID zugewiesen. Anschließend wird dem ausgewählten Vorgang als Startdatum das Endedatum des Vorläufers zugewiesen:

Das Startdatum des ausgewählten Vorganges: Application.ActiveCell.Task.Start

Das Enddatum des Vorgängers: ActiveProject.Tasks(StartID).Finish

Das Gleiche wird für den Nachfolger Application.ActiveCell.Task.Successors wiederholt. Der Vorgang endet zwar am selben Tag, wo der Nachfolger beginnt, jedoch zeigt ein Blick auf die Uhrzeit, dass er am morgen endet und der Nachfolger dann beginnt. Somit passt es also. Die Ansicht kann in den Optionen umgestellt werden. Im dortigen Menü unter Allgemein kann das Datumsformat umgestellt und auch die Uhrzeit mit angezeigt werden.