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.
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.