Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

@fcs VBA Gantt Chart

Forumthread: @fcs VBA Gantt Chart

@fcs VBA Gantt Chart
17.02.2014 14:17:52
Dip
Neue Antwort ganz unten :-)
Guten Tag Allerseits,
Gerne würde ich die folgende Problemstellung ins Forum einbringen, in der Hoffnung, jemand kann mir weiterhelfen!
Es geht darum, einen automatisierten Gantt-Chart auf Basis einer Projektstruktur zu generieren:
Im folgenden File:
https://www.herber.de/bbs/user/88262.xlsx
gibt es zwei Arbeitsblätter...
Im Arbeitsblatt "Hilfstabelle Pivot" stehen die Grunddaten in Form einer Pivot Tabelle. Das Pivot würde bereits vorhanden sein. Es beinhaltet die Projektstruktur, Bezeichnung, Start- Enddatum sowie Dauer.
Im zweiten Arbeitsblatt "Timeline" würde nun der automatisierte Gantt-Chart erscheinen, auf Basis der Pivotdaten im Arbeitsblatt "Hilfstabelle Pivot".
Folgende Parameter sind zu berücksichtigen für den Gantt-Chart im Arbeitsblatt "Timeline":
- Der Zeitstrahl des Gantt-Charts ist gegliedert über Jahr, Monat, KW, Tag bis zum Datum. Der Benutzer kann die Detailebene auswählen (über eine Auswahlbox?) -Jahressicht?, Monatssicht?, KW-Sicht?, Tagessicht?... z.B. bei Jahressicht, würde der Kalender sich komprimieren, ein Jahr pro Spalte... und je detaillierter die Sicht desto mehr expandieren würde sich der Kalender... Eine Art Gruppierung, nach unten sowie nach rechts...
- Der Benutzer hat die Auswahl (über eine Auswahlbox?), welche Ebene er angezeigt haben möchte(Spalte A) - Ebene Strategisches Projekt?, Vorhaben?, Projekt?, oder alle gemeinsam?... Basierend auf seiner Auswahl der Ebene, zeigt er die entsprechenden Daten des Pivots an (Spalte B bis F)
- Basierend auf dem Start- bzw. Enddatum werden automatisch die Zellen (ab Spalte H) farblich ausgefüllt, und zwar entsprechend der hinterlegten Farbe für die jeweilige angegebenen Phase in Spalte C. Samstage und Sonntage sollen durchgehend Grau ausgefüllt werden. Ganz elegant wäre es, wenn man ausserdem nach Wunsch das Wochenende ein- bzw. ausblenden könnte, aber kein Muss hier.
- Der Kalender würde von 2013 bis 2050 reichen. Dabei sollte man auswählen können, ab welches Jahr der Kalender beginnt. z.B. falls 2015 dann würde der Kalender von 2015 bis 2052 reichen.
Sehr hilfreich wäre, wenn zusätzlich folgende Konstanten in den Code definiert werden könnten, damit zukünftige Anpassungen mühelos erfolgen können:
- Farben des Zeitstrahls je Projektphase
- Startjahr des Kalenders
- In welchen Spalten bzw. Zellen sich die entsprechenden Kriterien (Ebene, Phase, Start, Ende, erster Tag des Kalenders etc..) befinden, falls Spalten/Zellen hinzugefügt/gelöscht werden.
Ich bin mir bewusst, dass diese Problemstellung gar nicht einfach zu lösen ist und viel Wissen und Können abverlangt... Für alle Profis hier vielleicht eine interessante Herausfoderung...
Ich bin über jeglichen Hinweis, Input, Lösung sehr dankbar!
Euch allen einen schönen Tag!
Beste Grüsse
Dip
Hallo Dip,
ich hab die Herausforderung angenommen und deine Wunschliste mal versucht umzusetzen. Es war schon eine ziemliche Fummelarbeit.
Die farbliche Gestaltung erfolgt über Zellformatvorlagen. D.h. die Farben sind nicht im Code fest verankert, sondern können direkt über die Anpassung der entsprechenden Formatvorlagen geändert werden.
Die Detailierung der Anzeige für Projekt/Vorhaben/Vorhabendetails erfolgt wie in deiner Beispieldatei über die Gliederungsfunktion.
Für die Einstellung des Zeitrasters hab ich ein Userform eingebaut.
Mit den paar Testdaten geht das ganze recht flott. Wie das bei vielen Projekten/Tagen aussieht kann ich dir nicht sagen.
Gruß
Franz
https://www.herber.de/bbs/user/88425.xlsm
Hallo Franz,
Ich habe mir nun deine Lösung genauer angeschaut und in meiner vorhandenen Planungsdatei eingearbeitet. Wirklich tolle Lösung!
Gerne würde ich noch ein paar Punkte nachfragen:
- Das Start-, Enddatum sowie Zeitraster (Jahr/Monat/...) bleiben nicht "gespeichert". Wenn man den Button "Timeline ändern" auswählt, sind alle vorher eingegebenen Parameter nicht mehr eingestellt. Es wäre sehr hilfreich, wenn die eingegebenen Parameter festgehalten werden, so müsste man nicht ausprobieren welche Werte man damals eingegeben hatte...?
Ganz elegant wäre es, wenn sich die Zeilen 14-17 im Blatt "Timeline" je nach ausgewählten Zeitraster anpassen würden (Zb. wenn Monat ausgewählt werden würde, werden die Zeitraster darunter, dh. Zeile 15-17 (KW/Tag/Datum) ausgeblendet).
- Gerne würde ich als Zeitraster noch "Halbjahr" und "Quartal" auswählen können?
- Wäre es möglich, dass sich die Phasen automatisch neu "ausfüllen", nachdem man die Projekdaten (Button "Projektdaten einlesen") neu eingelesen hat? Aktuell werden die Phasen gelöscht und man muss die Parameter wieder neu eingeben?
- Wenn man noch eine neue Ebene über allen anderen (eine Ebene über "Strategisches Projekt") bräuchte, könnte man dies so einfach einstellen, indem man angibt wieviele Ebene es gibt oder neue Spalte hinzufügt?
- Elegant wäre zusätzlich eine rote vertikale Linie einzubetten, welche dem heutigen Datum entspricht und man somit auf einem Blick sieht, welche Phasen in der Vergangenheit liegen und welche von heute ab noch anstehen :-)
- Würde es das ganze vereinfache, wenn statt dass die Projektdaten über das Makro eingelesen werden, ich das Pivot direkt in das Blatt "Timeline" in gleicher Form einsetzen würde?
Wäre dies möglich so umzusetzen?
Vielen Dank im Voraus für Deine Aufmerksamkeit Franz!
Beste Grüsse
Patrick

Anzeige

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: @fcs VBA Gantt Chart
19.02.2014 08:43:42
fcs
Hallo Patrick,
ich hab frühestens am Wochende Zeit mir das etwas genauer anzusehen.
- Das Start-, Enddatum sowie Zeitraster (Jahr/Monat/...) bleiben nicht "gespeichert". Wenn man den Button "Timeline ändern" auswählt, sind alle vorher eingegebenen Parameter nicht mehr eingestellt. Es wäre sehr hilfreich, wenn die eingegebenen Parameter festgehalten werden, so müsste man nicht ausprobieren welche Werte man damals eingegeben hatte...?
Ganz elegant wäre es, wenn sich die Zeilen 14-17 im Blatt "Timeline" je nach ausgewählten Zeitraster anpassen würden (Zb. wenn Monat ausgewählt werden würde, werden die Zeitraster darunter, dh. Zeile 15-17 (KW/Tag/Datum) ausgeblendet).

Die Eingabewerte im Userform könnte man auf einem separaten Blatt speichern und beim Öffen der Userform in die Steuerelemente laden.
- Gerne würde ich als Zeitraster noch "Halbjahr" und "Quartal" auswählen können?
So etwas sollte man sich zu Beginn eines Projektes überlegen, wenn man die Anforderungen definiert und nicht dann man eine Lösung hat. Umsetzen ist zeitaufwendig, da vielen Stellen Anpassungen/Ergänzungen erforderlich werden.
- Wäre es möglich, dass sich die Phasen automatisch neu "ausfüllen", nachdem man die Projekdaten (Button "Projektdaten einlesen") neu eingelesen hat? Aktuell werden die Phasen gelöscht und man muss die Parameter wieder neu eingeben?
Das kann man schon machen, wenn die Eingaben im Userform zwischengespeichert werden.
- Wenn man noch eine neue Ebene über allen anderen (eine Ebene über "Strategisches Projekt") bräuchte, könnte man dies so einfach einstellen, indem man angibt wieviele Ebene es gibt oder neue Spalte hinzufügt?Hier musst du dich entscheiden was du willst; hier etwas variabel einzustellen wird extrem kompliziert, da hier einfach zu viele Sachen betroffen sein werden. Wenn du das umsetzen willst, dann solltest du dir kostenpflichtige Hilfe besorgen.
- Elegant wäre zusätzlich eine rote vertikale Linie einzubetten, welche dem heutigen Datum entspricht und man somit auf einem Blick sieht, welche Phasen in der Vergangenheit liegen und welche von heute ab noch anstehen :-)
Kann man im Prinzip machen, damit die Anzeige immer korrekt ist müsste hier eine AKtualisierung bei jedem Öffnen der Datei erfolgen. Damit es nicht zu kompliziert wird sollte allerdings nicht eine Linie eingefügt werden, sondern nur eine Zelle/Spalte farblich markiert werden.
- Würde es das ganze vereinfache, wenn statt dass die Projektdaten über das Makro eingelesen werden, ich das Pivot direkt in das Blatt "Timeline" in gleicher Form einsetzen würde?
Wahrscheinlich nicht.
Dann müßten die Daten, die aus dem Pivotbericht eingefügt werden, 100% genau so aussehen wie sie jetzt das Aktualisierungsmakro einträgt. Ich hab nämlich keine Lust da etwas umzuprogrammieren.
Gruß
Franz

Anzeige
AW: @fcs VBA Gantt Chart
20.02.2014 19:47:24
Dip
Hallo Franz,
Danke für Dein Feedback!
Zu Punkt 1: Wenn man die Eingabewerte zwischenspeichern könnte wäre dies super!
Zu Punkt 2: War mir nicht bewusst dass die Erweiterung des Zeitstrahls so zeitaufwendig ist. Auf Halbjahr wäre toll gewesen aber ist nicht Priorität.
Zu Punkt 3: dito Punkt 1
Zu Punkt 4: Wenn man vorsorglich zusätzlich 3 Ebenen vorsehen würde? Sonst entfällt halt diese Ergänzung.
Zu Punkt 5: Ich lasse mich gerne von dir überraschen :-) ich denke du würdest sogar eine bessere Idee diesbezüglich haben wie man es am besten darstellt.
Zu Punkt 6: Ich werde ein bisschen herumspielen und versuchen das Pivot gleich deiner Vorgabe zu integrieren.
Bin gespannt auf dein Feedback.
Vielen Dank für Deine Aufmerksamkeit Franz!
Beste Grüsse
Patrick

Anzeige
AW: @fcs VBA Gantt Chart
20.02.2014 19:55:32
Dip
ps. Dein Makro betreffend "Vergleich Werte und kopiere Zeile" habe ich integriert und getestet und es funktioniert mit kleinen Anpassungen hervorragend!!
Herzlichen Dank dafür Franz!!
Wünsche Dir einen schönen Abend
Beste Grüsse
Patrick
;
Anzeige

Infobox / Tutorial

Excel VBA Gantt Chart erstellen


Schritt-für-Schritt-Anleitung

  1. Vorbereitung der Daten: Stelle sicher, dass du eine Pivot-Tabelle mit den nötigen Informationen hast, also Projektstruktur, Bezeichnung, Start- und Enddaten sowie Dauer. Die Pivot-Tabelle sollte sich im Arbeitsblatt "Hilfstabelle Pivot" befinden.

  2. Erstellen des Gantt-Charts:

    • Öffne das Arbeitsblatt "Timeline".
    • Füge ein Userform hinzu, um die Anzeigeoptionen für den Gantt-Chart auszuwählen (z.B. Jahr, Monat, KW, Tag).
    • Verwende VBA, um die Zellen ab Spalte H farblich zu füllen, basierend auf den Projektphasen aus Spalte C.
  3. Detailansicht anpassen: Implementiere eine Auswahlbox, die es dem Benutzer ermöglicht, die Detailebene auszuwählen. Dies könnte durch die Verwendung von VBA-Steuerelementen erfolgen.

  4. Wochenende ein- oder ausblenden: Implementiere eine Option, um Samstage und Sonntage grau darzustellen oder auszublenden.

  5. Kalenderanpassung: Stelle sicher, dass der Kalender von 2013 bis 2050 reicht und der Benutzer das Startjahr auswählen kann.

  6. Eingabewerte speichern: Implementiere eine Funktion, die die Eingabewerte für Startdatum, Enddatum und Zeitraster speichert, sodass sie beim Öffnen des Userforms erneut angezeigt werden.


Häufige Fehler und Lösungen

  • Fehler: Eingabewerte gehen verloren: Wenn du die Einstellungen änderst, werden die Eingabewerte nicht gespeichert. Lösung: Implementiere eine Funktion, die die Eingabewerte in einem separaten Blatt speichert.

  • Fehler: Kalender zeigt falsche Daten an: Überprüfe, ob die Daten aus der Pivot-Tabelle korrekt in den Gantt-Chart übernommen werden.

  • Fehler: Keine farbliche Markierung der Phasen: Stelle sicher, dass die Zellformatvorlagen richtig eingestellt sind und die Farben korrekt zugewiesen sind.


Alternative Methoden

  • Excel Gantt Chart ohne VBA: Du kannst auch ein Gantt-Diagramm manuell erstellen, indem du bedingte Formatierung und Diagramme in Excel verwendest, jedoch ist VBA oft effizienter für komplexere Anforderungen.

  • Gantt-Tools: Es gibt viele spezielle Tools, die Gantt-Charts erstellen können, z.B. Microsoft Project oder Online-Tools wie TeamGantt, die einfachere Benutzeroberflächen bieten.


Praktische Beispiele

  1. Einfaches Gantt-Chart: Erstelle ein Gantt-Chart mit zwei Projekten und verwende unterschiedliche Farben für die Phasen. Dies könnte in einer Excel-Datei aussehen wie:

    Projekt Startdatum Enddatum Dauer Phase
    Projekt A 01.01.2023 15.01.2023 14 Planung
    Projekt B 16.01.2023 30.01.2023 14 Umsetzung
  2. Erweiterte Optionen: Füge Funktionen hinzu, wie die Möglichkeit, die Detailebene oder die Sichtweise (Jahr, Monat, etc.) über ein Dropdown-Menü auszuwählen.


Tipps für Profis

  • VBA-Optimierung: Achte darauf, deinen VBA-Code zu optimieren, um die Performance zu verbessern, besonders bei großen Datenmengen.

  • Verwendung von Modulen: Lagere deinen Code in separate Module aus, um die Übersichtlichkeit zu erhöhen und die Wartung zu erleichtern.

  • Dokumentation: Füge Kommentare zu deinem Code hinzu, um zukünftige Anpassungen zu erleichtern.


FAQ: Häufige Fragen

1. Wie kann ich ein Gantt-Chart in Excel erstellen?
Du kannst ein Gantt-Chart in Excel erstellen, indem du eine Pivot-Tabelle für deine Projektdaten verwendest und dann mit VBA die Darstellung automatisierst.

2. Funktioniert das Gantt-Chart in allen Excel-Versionen?
Die beschriebenen VBA-Funktionen sind in Excel 2010 und späteren Versionen verfügbar.

3. Kann ich die Farben für die Phasen anpassen?
Ja, du kannst die Farben in den Zellformatvorlagen anpassen, um die verschiedenen Phasen deines Projekts darzustellen.

4. Was mache ich, wenn mein Gantt-Chart nicht richtig angezeigt wird?
Überprüfe die Datenquelle und stelle sicher, dass alle Zellreferenzen korrekt sind und das VBA-Makro ordnungsgemäß funktioniert.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige