Thema Datum  Von Nutzer Rating
Antwort
Rot verschachtelte If - Abfrage mit VBA in Excel
06.10.2012 20:32:58 Tenshi
NotSolved

Ansicht des Beitrags:
Von:
Tenshi
Datum:
06.10.2012 20:32:58
Views:
1719
Rating: Antwort:
  Ja
Thema:
verschachtelte If - Abfrage mit VBA in Excel

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

 

 


Ihre Antwort
  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen
Thema: Name: Email:



  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen

Thema Datum  Von Nutzer Rating
Antwort
Rot verschachtelte If - Abfrage mit VBA in Excel
06.10.2012 20:32:58 Tenshi
NotSolved