Nov 162019
 

Ausgangslage und Problemstellung:

Ab Version Microsoft Project 2013 ist es möglich, die Nachfolger der aktuell markierten Vorgangszeile farbig hervorzuheben: hierzu wählt man auf Register Format in der Gruppe Balkenarten den Befehl Vorgangspfad und darunter aktiviert man den Eintrag Nachfolger.

Allerdings ist es leider nicht möglich, nach dieser farbigen Markierung zu filtern!

Insbesondere bei komplexen Projekten ist eine Funktion, die alle Nachfolger zu einem bestimmten Vorgang automatisch markiert und somit ein Filtern ermöglicht, essenziell.

Lösungsansatz für Microsoft Project ab Version 2013:

Mit Hilfe von VBA (Visual Basic for Applications)  lassen sich Nachfolger, also Vorgangszeilen, die mit einem bestimmten Vorgang verknüpft sind, mit einer Kennzeichnung in einem Datenbankfeld, bzw. Spalte im Gantt-Diagramm versehen.

VBA ist eine Programmiersprache und man sollte wissen, was man macht, oder was man besser nicht macht. Ggf. ist es sicherer, den Umgang mit VBA in einem Kurs zum Thema Microsoft Project zu üben, bevor man das nachfolgende Beispiel praktisch nachvollzieht. Natürlich sollte man stets eine Sicherungskopie von allen Dateien machen und ggf. den Administrator, Vorgesetzten um Erlaubnis fragen, bevor man mit VBA experimentiert.

Der VBA Code liest das Datenfeld pathsuccessor aus, welches durch die oben beschriebene Funktion dynamisch mit Inhalt gefüllt wird und die farbige Kennzeichnung im Gantt-Diagramm ermöglicht. Damit das Makro bei Ausführung ein Ergebnis zeigt, ist es also zwingend erforderlich die Nachfolger-Funktion zu aktivieren (Format-Register –> Balkenarten-Gruppe –> Vorgangspfad-Schaltfläche –> Nachfolger-Funktion)

Das Makro nutzt das benutzerdefinierte Feld Text2 – dieses Feld sollte als Spalte in der aktuellen Ansicht z.B. Gantt-Diagramm eingefügt werden und keine Inhalte und/oder keine zugewiesene Formel, oder Nachschlagetabelle beinhalten.

Am besten wird ein VBA-Code in einem neuen Modul in der Global.MPT von Microsoft Project eingegeben, damit der VBA-Code unabhängig in jeder Microsoft Project Datei funktioniert:

Hierzu startet man aus Microsoft Project den Microsoft Visual Basic for Applications – Editor z.B. mit der Tastenkombination Alt+F11

Im Microsoft Project den Microsoft Visual Basic for Applications – Editor wird mit der Tastenkombination Strg+R der Projekt-Explorer geöffnet (sofern nicht bereits sichtbar)

Im Projekt-Explorer markiert man die Zeile ProjectGlobal (Global.MPT) und über den Menüeintrag Einfügen erreicht man den Eintrag Modul – durch klicken wird ein neues Modul unterhalb von Module im Projekt-Explorer angezeigt.

Durch Doppelklick auf das Modul wird dieses geöffnet – der Cursor blinkt nun im rechten weißen Bereich und wartet auf Codeeingabe – hier gibt man folgenden Code ein:

Sub Vorgang_und_Nachfolger()
For Each Task In ActiveProject.Tasks
If Task.ID = Application.ActiveCell.Task.ID Then
Task.Text2 = „V“
End If
If Task.PathSuccessor = True Then
Task.Text2 = „N“
End If
Next Task
End Sub

!!Achtung falls Sie den Code kopieren: bitte achten Sie darauf, dass die Anführungszeichen in den beiden Zeilen Task.Text2 = „V“ und Task.Text2 = „N“ manuell im Codefenster durch gerade Anführungszeichen über die Tastatur ersetzt werden, ansonsten funktioniert der Code nicht!!

Anschließend kann das Fenster des Microsoft Visual Basic for Applications – Editors einfach geschlossen werden.

Funktionsbeschreibung des Makros:

In einem Projekt in der Ansicht Gantt-Diagramm mit eingefügter Spalte Text2 und aktivierter Nachfolger-Funktion kann nun das Makro „Vorgang_und_Nachfolger“ über die Registerkarte Ansicht –> Gruppe Makros –> Befehl Makros in dem Dialogfenster Makros ausgewählt werden. Über die Schaltfläche Ausführen wird das Makro gestartet und die aktuell markierte Zeile wird mit „V“ in Text2 gekennzeichnet und alle Nachfolger dieser aktuellen Zeile erhalten als Kennzeichnung ein „N“ in der Text2-Spalte.

Es ist nun möglich, z.B. den Autofilter von Text2 zu nutzen, um das gewünschte Filterergebnis zu erhalten.

Sollen für eine andere Zeile, bzw. für einen anderen Vorgang die Kennzeichnungen neu gesetzt werden, so muss der Inhalt von Spalte Text2 zuvor manuell gelöscht werden (markieren und z.B. Entf.-Taste)