„Visuelles Management setzt bei dem Gedanken an, dass Probleme nur gelöst werden können, wenn sie sichtbar sind.“ sagt eine der wichtigsten Lean-Philosophien. Das gilt im Besonderen im Projektmanagement, da hier durch den Projektcharakter alles nur einmal im Zeitablauf ausgeführt werden kann. Danach gibt es nur Möglichkeiten von Verbesserungen in Folge-Projekten.
Basis für jedes Projekt ist neben dem Projektstrukturplan der Projektplan. Der regelt alle zeitlichen Abläufe im Projekt. Nur wenn Sie den Projektplan richtig gut planen, können Sie Ihre Projektziele sicherer erreichen. Um die Ziele zu erreichen, brauchen Sie die Mitarbeit von anderen – sonst wäre es auch keine Projekt, sondern eine Aufgabe. Deshalb muss der Projektplan dem Team genauso klar sein wie Ihnen, sonst sind die Projektziele, zumindest terminlich, gefährdet.
An dieser Stelle lohnt es sich, die Konzepte des visuellen Managements auf den Projektplan zu übertragen.
In diesem Artikel lesen Sie, wie Sie das praktisch anwenden, ein Tool selber programmieren und für Ihre eigenen (layoutbezogenen) Projekte anwenden und das alles ohne Spezialsoftware. Sie brauchen nur Microsoft Excel.
Probleme layoutbezogener Projekte
Ein Projektplan, richtiger ist die Bezeichnung Ablaufplan, liegt in der Regel als Gantt Chart vor. Die einzelnen Vorgänge sind in Phasen terminlich geordnet. Jedem Vorgang sind Ressourcen zugeordnet und diese abgestimmt. Mit Verknüpfungen zwischen den Vorgängen sind Betrachtungen der kritischen Pfade möglich. Für sehr viele Projekte hilft diese Visualisierung jedem Projektleiter, sein Projekt zum Erfolg zu führen.
Müssen Sie ein layoutbezogenes Projekt, wie eine Baustelle, eine Fertigungszelle, einen größeren Umzug, eine Eventplanung, eine Garten-/Landschaftsgestaltung oder eine Werkserweiterung leiten, ist diese Vorgehensweise kompliziert. Bereits bei der Projektplanung müssen Sie immer im Kopf behalten, wie der jeweilige Fortschritt im Layout andere Projektteilnehmer beeinflusst.
Für ein Bauprojekt bedeutet das möglicherweise, dass etwa Materiallieferung Flächen belegen, die ebenfalls zeitgleich ausgebaut werden sollen. Parallele Bautätigkeiten können sich gegenseitig stören, weil gleiche Zufahrten benötigt werden, aber durch die Parallelität gesperrt sein müssen.
In diesen Fällen reichen die reinen Termin- und Ressourcen-Informationen im Gantt Chart nicht aus. Sie brauchen eine Transformation des Projektplans in ein Layoutdokument, eine Anwendung von visuellem Management, sozusagen eine Zeitlinienvisualisierung.
Visuelle Zeitpläne ganz einfach selber erstellen – ohne Spezialsoftware, direkt mit Microsoft Excel. Das geht mit dem Tool TimelineVis. In diesem Artikel erfahren Sie zum Einsatz des Tools.
TimelineVis – Timeline visualization
Für diese Transformation brauchen wir mehrere Zutaten. Die Basis ist Ihr Projektplan. Die Visualisierung muss in einem Layoutdokument, einer Zeichnung oder einem Foto stattfinden. Etwas Software regelt zwischen beiden die Visualisierung.
Der Projektplan ist eine Tabelle. Das Layout ist eine Art Bilddokument. Es soll aber keine Spezialsoftware sein, sondern einfach ohne Schulung zu bedienen sein. Das passt gut zu Microsoft Excel.
Der Projektplan muss als Excel-Tabelle vorliegen. Wenn Sie Microsoft Project einsetzen, ist ein Export direkt nach Excel möglich. Schneller geht aber meistens Copy&Paste der wichtigsten Vorgangsdaten: Name, Beginn-Datum, Ende-Datum, Ressourcenname.
Als zweites brauchen Sie Ihr Layout. Das kann ein oder können mehrere Bilddokumente sein. Diese Bilder fügen Sie auch in die Excel Arbeitsmappe als eigenes Tabellenblatt ein. Wie diese angeordnet sind oder welchen Ausschnitt oder Zoom Sie wählen, passen Sie an Ihrem Kommunikationsziel an.
Bisher sind die beiden Basis-Elemente Projektplan und Layout völlig unabhängig voneinander. Damit unsere Steuerung das ändern kann, braucht es Verbindungselemente zwischen beiden.
Die Vorgänge im Projektplan müssen die Verbindung anstoßen. Sie wollen vermutlich auch nicht jeden Vorgang im Layout darstellen. Für jeden, der für den Projektfortschritt wichtig ist und auch sinnvoll visualisiert werden kann, fügen Sie ein Excel Element ein. Das kann eine Excel Form (Shape), Piktogramm, 3D-Modell oder Bild sein.
Die Verbindung zwischen Element und Projektplan definieren Sie über einen eindeutigen Namen. Diesen Namen (den ich im weiteren als Marker bezeichnen werde, weil er die Stelle im Layout markiert) können Sie frei wählen. Tragen Sie ihn in eine zusätzliche Spalte in der Excel Kopie des Projektplans ein. Damit haben Sie die Verbindung hergestellt.
Noch besser ist es, wenn Sie den Marker-Namen direkt in Ihrer Projektsoftware speichern können. Arbeiten Sie mit Microsoft Project oder Project Libre funktioniert das über freie Textfelder (Text1, Text2 usw.) sehr einfach. Damit haben Sie den Vorteil, dass Sie keine weitere Anpassungsarbeit des Projektplans mehr brauchen. Ihren Projektplan visualisieren Sie dann sofort.
Schauen Sie sich am besten ein Projektbeispiel für ein einfaches Landschaftsbau Projekt an. Dort erfahren Sie Schritt für Schritt wie Sie einen Projektplan mit dem TimelineVis Tool visualisieren.
Umsetzen des Steuerungsalgorithmus
Mit diesen Voraussetzungen kann der Steuerungsalgorithmus seine Arbeit beginnen und passend zu einem beliebigen Zeitpunkt die entsprechend aktiven Marker finden und entsprechend ein- oder ausblenden.
Wir müssen ihm also als Parameter ein Visualisierungsdatum übergeben. Möchten Sie die Visualisierung auch ausdrucken oder verteilen und das nicht täglich machen, ist es sinnvoll einen Datumsbereich zu vorzugeben. Das können beispielsweise 7 Tage, 2 Wochen oder ein anderer sinnvoller Zeitraum sein. Als Parameter übersetzt brauchen wir einen Start- und Endezeitpunkt der Visualisierung. Damit die beiden Parameter gleich aus einer Excel Zelle ausgelesen werden können, übergeben wir sie als String. Die Routine VisualizeMarkersByDate wandelt sie dann selber in ein Datumsfeld um.
Sub VisualizeMarkersByDate(dateStr As String, dateUntilStr As String) Dim i As Integer Dim s As String Dim markerNameBefore As String Dim markerNameAfter As String Dim markerNameActive As String Dim markerNameCaption As String Dim markerCode As String Dim dateStart As Date Dim dateEnd As Date Dim dateViewFrom As Date Dim dateViewUntil As Date Dim shpOrigin As String If IsSetupOk() = False Then Exit Sub
Bevor es mit einer Visualisierung losgehen kann, müssen die relevanten Felder, die für die Visualisierung notwendig sind, im Projektplan definiert sein. Da sich das logischerweise immer ändern kann, lagern wir das in eine eigenes Tabellenblatt Setup aus.
Jede relevante Zelle bekommt einen eigenen Namen, damit wir später im Quellcode direkt darauf zugreifen können. Notwendige Felder sind neben dem Tabellenname der Projektplan-Kopie die Marker-Spalten, Termin-Spalten, Zeilen-Beginn und Zeilen-Ende.
Diese lesen wir über die Funktion IsSetupOK() ein und stellen sie als globale Variablen der gesamten Anwendung zur Verfügung.
Function IsSetupOk() As Boolean Dim result As Boolean result = True wbData = ReadWorkbookName(SHEET_SETUP, "WORKBOOK_NAME", ActiveWorkbook.name) sheetData = ReadWorkbookName(SHEET_SETUP, "SHEET_DATA", "") colMarkerBefore = ReadWorkbookName(SHEET_SETUP, "COL_MARKER_BEFORE", 0) colMarkerAfter = ReadWorkbookName(SHEET_SETUP, "COL_MARKER_AFTER", 0) colMarkerActive = ReadWorkbookName(SHEET_SETUP, "COL_MARKER_ACTIVE", 0) colMarkerCaption = ReadWorkbookName(SHEET_SETUP, "COL_MARKER_CAPTION", 0) colMarkerCode = ReadWorkbookName(SHEET_SETUP, "COL_MARKER_CODE", 0) colDateBegin = ReadWorkbookName(SHEET_SETUP, "COL_DATE_BEGIN", 0) colDateEnd = ReadWorkbookName(SHEET_SETUP, "COL_DATE_END", 0) rowBegin = ReadWorkbookName(SHEET_SETUP, "ROW_BEGIN", 0) rowEnd = ReadWorkbookName(SHEET_SETUP, "ROW_END", 0) timeStep = ReadWorkbookName(SHEET_SETUP, "TIME_STEP", 1) If colMarkerBefore = 0 Or colMarkerAfter = 0 Or colMarkerActive = 0 Or colDateBegin = 0 Or colDateEnd = 0 Or rowBegin = 0 Or rowEnd = 0 Then result = False If sheetData = "" Then result = False colsMarker(1) = colMarkerBefore colsMarker(2) = colMarkerAfter colsMarker(3) = colMarkerActive IsSetupOk = result End Function
Jetzt kann VisualizeMarkersByDate weiter seine Arbeit aufnehmen, indem zuerst aus Geschwindigkeitsgründen das Screenupdating von Excel ausgeschaltet wird, dann alle Marker Shapes ausgeblendet werden.
Application.Cursor = xlWait Application.ScreenUpdating = False Call SetMarkersVisible(False)
In der Hauptroutine werden alle Zeilen des Projektplans in einer Do-Schleife durchlaufen. Für jede Zeile, also jeden Vorgang werden alle drei Marker Namen in Variablen eingelesen.
dateViewFrom = CDate(dateStr) dateViewUntil = CDate(dateUntilStr) i = rowBegin Do markerNameBefore = Workbooks(wbData).Sheets(sheetData).Cells(i, colMarkerBefore) markerNameAfter = Workbooks(wbData).Sheets(sheetData).Cells(i, colMarkerAfter) markerNameActive = Workbooks(wbData).Sheets(sheetData).Cells(i, colMarkerActive) markerNameCaption = Workbooks(wbData).Sheets(sheetData).Cells(i, colMarkerCaption) markerCode = Workbooks(wbData).Sheets(sheetData).Cells(i, colMarkerCode) dateStart = Workbooks(wbData).Sheets(sheetData).Cells(i, colDateBegin) dateEnd = Workbooks(wbData).Sheets(sheetData).Cells(i, colDateEnd)
Je nachdem wo Beginn- und Ende-Datum des Projektvorgangs liegen, erfolgt die weitere Prüfung der Marker. Unterschieden wird zwischen VOR dem Termin oder NACH dem Termin oder der Vorgang ist AKTIV.
If dateViewFrom > dateEnd Then 'bereits abgeschlossen 'nur AFTER anzeigen, wenn vorhanden Call UpdateMarker(markerNameAfter, markerNameCaption, "NACHHER", "TEMPLATE_MARKER_AFTER", "2") ElseIf dateViewUntil < dateStart Then 'noch nicht begonnen 'BEFORE anzeigen, wenn vorhanden Call UpdateMarker(markerNameBefore, markerNameCaption, "VORHER", "TEMPLATE_MARKER_BEFORE", "1") Else 'ElseIf (dateViewFrom >= dateStart And dateViewUntil <= dateStart) Or (dateViewFrom <= dateEnd And dateViewUntil >= dateEnd) Then 'liegt innerhalb der Ansicht 'ACTIVE anzeigen If markerCode = "" Then markerCode = "AKTIV" Call UpdateMarker(markerNameActive, markerNameCaption, markerCode, "TEMPLATE_MARKER_ACTIVE", "3") End If
Die Prüfung der Marker erfolgt in der Sub UpdateMarker. Die Prozedur wird nur aktiv, wenn auch ein Marker Namen als Shape gefunden wird.
Dann wird zuerst die Sichtbarkeit auf TRUE gestellt. Die Formatierung erfolgt je nach Marker aus einer Definition. Damit Sie hier alle Möglichkeiten von Excel haben, stellen Sie alle Werte ebenfalls im Setup Tabellenblatt ein.
Über die drei Kreiselemente (Excel Formen) legen Sie die Formatierung jedes Markers abhängig von seinem Terminzustand fest. Über den Text der Form können sie mit J bzw. N steuern, ob ein Bezeichnungstext über die Routine eingetragen werden soll.
Das macht die Sub über die TextFrame2.TextRange.Charachters.text Eigenschaft.
Sub UpdateMarker(MarkerName As String, caption As String, colorCode As String, templateShape As String, priority As String) If ShapeExists(ActiveSheet.name, MarkerName) = True Then With ActiveSheet.Shapes(MarkerName) If .Visible = True And priority < .Title Then Exit Sub .Visible = True If ShapeExists(SHEET_SETUP, templateShape) = True Then Sheets(SHEET_SETUP).Shapes(templateShape).PickUp .Apply If UCase(Sheets(SHEET_SETUP).Shapes(templateShape).TextFrame2.TextRange.Characters.text) <> "J" Then caption = "" End If .TextFrame2.TextRange.Characters.text = caption .Title = priority End With If colorCode <> "" Then Call UpdateShapeColor(MarkerName, colorCode) End If End If End Sub
Für bestimmte Projekte macht es Sinn zusätzlich unterschiedliche Farben für Ressourcen zu verwenden. So lassen sich sehr einfach eine Formatierung für bestimmte Lieferanten umsetzen. Das realisieren wir im Quellcode mit der Prozedur UpdateShapeColor. Sie schaut im Setup Tabellenblatt nach, ob in der Spalte Code eine Übereinstimmung vorhanden ist und verwendet im positiven Fall die eingestellte Hintergrundfarbe.
Sub UpdateShapeColor(MarkerName As String, code As String) Dim shp As Shape Dim s As String For Each shp In ActiveSheet.Shapes If shp.name = MarkerName And shp.Visible = True Then shp.Fill.ForeColor.RGB = GetColorCode(code) End If Next End Sub Function GetColorCode(code As String) As Variant Dim result As Variant Dim i As Integer Dim r As Range result = Null If UCase(code) = "VORHER" Then If ShapeExists(SHEET_SETUP, "TEMPLATE_MARKER_BEFORE") = True Then GetColorCode = Sheets(SHEET_SETUP).Shapes("TEMPLATE_MARKER_BEFORE").Fill.ForeColor.RGB Exit Function End If ElseIf UCase(code) = "NACHHER" Then If ShapeExists(SHEET_SETUP, "TEMPLATE_MARKER_AFTER") = True Then GetColorCode = Sheets(SHEET_SETUP).Shapes("TEMPLATE_MARKER_AFTER").Fill.ForeColor.RGB Exit Function End If Else If ShapeExists(SHEET_SETUP, "TEMPLATE_MARKER_ACTIVE") = True Then result = Sheets(SHEET_SETUP).Shapes("TEMPLATE_MARKER_ACTIVE").Fill.ForeColor.RGB End If End If If UCase(code) = "AKTIV" Then GetColorCode = result Exit Function End If Set r = Sheets(SHEET_SETUP).Range("COLOR_CODES") For i = 1 To r.Rows.Count If UCase(code) = UCase(r.Cells(i, 1)) Then result = r.Cells(i, 2).Interior.Color Exit For End If Next GetColorCode = result End Function
VisualizeMarkersByDate durchläuft jede Zeile im Projektplan indem es die Variable i erhöht. Am Ende der Prozedur wird das Screenupdating wieder eingeschaltet.
i = i + 1 Loop Until i > rowEnd Application.Cursor = xlDefault Application.ScreenUpdating = True End Sub
Ein guter Anfang
Damit haben Sie die Grundlage, um Ihren Projektplan zu visualisieren. Für eine hilfreiche Unterstützung eines Projektteams reicht das noch nicht aus, weder für die Projektplanung, noch für die Projektüberwachung.
Dafür sind noch andere Funktionen hilfreich:
- Für die Visualisierungserstellung eine Funktion, um alle Marker Formen einblenden, so dass die Überlagerungsreihenfolge eingestellt werden kann
- Eine Funktion um alle Marker Formen auch auszublenden, so dass für Sie erkennbar wird, welche Formen richtig vom Projektplan erfasst sind
- Funktionen zum einfachen Wechseln (vor/zurück) des Visualisierungsdatums
- Einbinden alle Funktionen in die Ribbonleiste für einen einfachen Zugriff und direktes Steuern der Visualisierungszustände
Wie ich diese Anforderungen umgesetzt habe, können Sie sich selber direkt im Quellcode anschauen oder besser selber programmieren. Wie TimelineVis in verschiedenen Beispielprojekten arbeitet, können Sie sich hier anschauen.
Zusammenfassung
Visuelles Management im Projektplan hilft bei layoutbasierten Projekten, um ein klares Verständnis im Team zu erreichen. Die Visualisierung von Problemen ist unverzichtbar, um erfolgreiche Lösungen für sonst Unsichtbares zu finden. Während herkömmliche Projekte von Gantt Charts profitieren, stoßen layoutbezogene Projekte auf Komplexitäten, die über terminliche und ressourcenbezogene Informationen hinausgehen.
Die Transformation des Projektplans in ein Layoutdokument wird zu einer essentiellen Anpassung, um den Zusammenhang zwischen Fortschritt und Layout verständlich zu machen. In diesen Fällen wird die Visualisierung zum entscheidenden Schlüssel, um effektive Koordination und das Erreichen der Projektziele zu gewährleisten.
Letztendlich ist das Verständnis der Lean-Philosophie des visuellen Managements ein grundlegendes Werkzeug, um Projekte erfolgreich zu steuern und den Weg für künftige Verbesserungen zu ebnen.
Download
Hier ist das + an Code für diesen Artikel. Downloaden Sie sich das Tool zum visuellen Management für den Projektplan: TimelineVis
Links
Artikel TimelineVis – Zeitpläne visualisieren
Beispielprojekt für TimelineVis Visualisierter Projektplan im Landschaftsbau
Pingback: Visualisierter Projektplan im Landschaftsbau - Tech+Code