Visuelles Management für den Projektplan ohne Spezialsoftware

visuelles Management im Projektplan mit TimelineVis

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


TimelineVis - Visuelle Zeitpläne

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.


Layoutbild für Visualisierung in TimelineVis Dokument einfügen
Layoutbild für die Visualisierung in das TimelineVis Dokument einfügen

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.

TimelineVis Verbindung zum Zeitplan
Verbindung zum Zeitplan

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.

TimelineVis - Formen- und Farb-Zuordnung
Formen- und Farb-Zuordnung

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

TimelineVis - Formen- und Farb-Zuordnung besondere Visualisierung
Formen- und Farb-Zuordnung mit Farbgebung durch spezifische Codes
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

Download mit Quellcode zum Programmieren

Links

Artikel TimelineVis – Zeitpläne visualisieren

Beispielprojekt für TimelineVis Visualisierter Projektplan im Landschaftsbau

Dieser Beitrag hat einen Kommentar

Kommentare sind geschlossen.