Hallo,
ich habe erst vor kurzem mit VBA angefangen und stoße leider im Moment auf meine Grenzen bei einem Projekt, mit der normalen "wenn"-Funktion in Excel funktioniert es nur bedingt.
Ich habe verschiedene Projekte, die mit Excel verwaltet werden. Kommt ein neues Projekt hinzu, wird über ein STeuerelement automatisch ein neues Tabellenblatt erstellt und gleichzeitig das Tabellenblatt umbenannt auf den Projektnamen. Auf dem neu erstellten Projektblatt werden alle Daten eingegeben und gepflegt, diese werden automatisch in eine Gesamtübersicht kopiert, wo sämtliche Projekte untereinander verzeichnet sind. Soweit funktioniert alles.
Jetzt geht es darum, den Status der jeweiligen Projekte in der Gesamtübersicht farblich zu kennzeichnen, sobald sich dieser ändert (die Änderungen werden immer auf dem jeweiligen Projektblatt vorgenommen). Gelb steht für "in Arbeit", grün für "erledigt" und rot für "überfällig". Bedingte Formatierung in Excel hilft hier nicht weiter.
Beispiel:
so sieht die Tabelle auf dem Projektblatt aus:
Meilenstein Datum Ergebnis ja / nein aktueller Status
text 20.10.2012 text gelb
text 30.11.2012 text gelb
usw (es stehen 5 Zeilen untereinander für 5 Meilensteine, also Meilenstein1, Meilenstein 2 etc)
Es soll mittels VBA automatisch folgendes geprüft werden:
1. Abfrage: ist Datum des Meilensteins < heute() und / oder kein Eintrag bei ja/nein = rot für "überschritten" in Gesamtübersicht
2. Abfrage: ist Datum des Meilensteins > heute() = gelb für "in Arbeit" in Gesamtübersicht
3. Abfrage: steht "ja" oder "nein" unabhängig vom Datum = grün für "erledigt" , falls keine weiteren Meilensteine vorhanden sind und Abfrage beenden, ansonsten auf nächsten Meilenstein springen und dessen Datum prüfen (Abfrage soll dann wieder automatisch mit Abfrage 1 beim Meilenstein 2 anfangen usw, bis alle Meilensteine abgearbeitet sind).
Die jeweilige Farbe soll automatisch auf die Gesamtübersicht übertragen und je nach Status aktualisiert werden. Die Anzahl der Meilensteine variiert, es kann nur einer sein, max. jedoch 5.
ich kriege es im Moment nur bedingt hin, dass er das Datum vergleicht, entsprechend die Farbe im Projektblatt anzeigt. Die Ja/Nein - abfrage ist nur bedingt fertig, bei ja wird die Farbe geändert, jedoch löscht er den Text aus der Zelle beim Ausführen des Codes.
Über einen Tipp wäre ich sehr dankbar, wie und ob dies überhaupt realisiert werden kann.
Private Sub Worksheet_Activate()
Dim Datum As Date
Dim Ja As String, Nein As String
Range("G21").Value = Ja
Range("G21").Value = Nein
Datum = Range("D21").Value
' wenn hinterlegtes Datum größer ist als aktuelles Datum, gelb marieren, sonst rot
If Datum >= CDate(Now) Then Range("H21").Interior.Color = vbYellow Else Range("H21").Interior.Color = vbRed
Datum = Range("D22").Value
If Datum >= CDate(Now) Then Range("H22").Interior.Color = vbYellow Else Range("H22").Interior.Color = vbRed
Datum = Range("D23").Value
If Datum >= CDate(Now) Then Range("H23").Interior.Color = vbYellow Else Range("H23").Interior.Color = vbRed
Datum = Range("D24").Value
If Datum >= CDate(Now) Then Range("H24").Interior.Color = vbYellow Else Range("H24").Interior.Color = vbRed
Datum = Range("D25").Value
If Datum >= CDate(Now) Then Range("H25").Interior.Color = vbYellow Else Range("H25").Interior.Color = vbRed
' wenn in G21 Ja oder Nein steht und D22 leer ist, dann grün
Range("G21").Value = Ja
If Range("G21").Value = Ja Then Range("H21").Interior.Color = vbGreen
. usw
Problem ist auch, dass ich den Code im Moment nur mit F5 testen kann, er soll aber automatisch laufen, sobald die entsprechenden Felder geändert werden.
Kann mir hier jemand weiterhelfen, wäre sehr dankbar dafür !!
Viele Grüße
|