antonh
Goto Top

VBA Code für eine Roadmap

Hallo zusammen,

ich benötige für ein Projekt einen Excel Kalender als Roadmap.

Ich werde noch ein Bild einfügen damit man es besser verstehen kann.

Und zwar möchte ich, wenn man einen Namen für das Projekt eingibt und dann die Quartale (Dauer) eingibt z.B.

Test Q1/14 - Q2/15

soll die sich die dahinter befindlichen Feld in einer Farbe färben von Q1/14 - Q2/15!

3070be17357fe749e47ee1caab767dec

Das Bild zeigt wie es fertig aussehen soll.

ich möchte also prüfen welche Werte im Feld (Start) und im Feld (End) stehen und mit hilfe dieser Werte eine fabige Makierung dahinter!

Und jetzt brauch ich bitte Hilfe!

Content-ID: 218348

Url: https://administrator.de/forum/vba-code-fuer-eine-roadmap-218348.html

Ausgedruckt am: 23.12.2024 um 13:12 Uhr

MoeSys
MoeSys 02.10.2013 um 11:36:37 Uhr
Goto Top
Hi Anton,

da reicht doch die im Excel integrierte Bedingte Formatierung!!

LG
Moe
colinardo
colinardo 02.10.2013 um 12:22:38 Uhr
Goto Top
Hallo AntonH,
wie MoeSys schon schreibt reicht dafür eine bedingte Formatierung auf Basis einer Formel. Anhand deines Bildes lautet die Formel in der bedingten Formatierung folgendermaßen:
=UND(WERT(RECHTS($C3;2)&TEIL($C3;2;1))<=WERT(RECHTS(E$2;2)&TEIL(E$2;2;1));WERT(RECHTS($D3;2)&TEIL($D3;2;1))>=WERT(RECHTS(E$2;2)&TEIL(E$2;2;1)))
Du markierst also den Bereich wo die Balken erscheinen sollen, wählst dann Bedingte Formatierung > Neue Regel > "Formel zur Ermittlung ..." und fügst die obige Formel ein und setzt du dort noch mit "Formatieren" eine Hintergrundfarbe für die Zelle.

Grüße Uwe
AntonH
AntonH 02.10.2013 um 13:02:13 Uhr
Goto Top
Genau, ich will den bereich nicht makieren müssen. Das soll Excel selber machen ich will bei Start z.B. Q2/14 und Ende z.B. Q3/15 rein schreiben und Excel dann genau diesen Bereich fabig makieren. ich will da nur die zahlen rein schreiben sonst nix!!!
colinardo
colinardo 02.10.2013 aktualisiert um 13:05:54 Uhr
Goto Top
da hast du mich falsch verstanden, du legst hier nichts fest sondern Excel formatiert die Zellen entsprechend deiner Eingaben in Spalte C und D... deswegen heißt es ja "bedingte" Formatierung in die Zellen musst du nichts reinschreiben !!!
colinardo
colinardo 02.10.2013 um 13:07:42 Uhr
Goto Top
Hier ein Demo-Dokument zur Veranschaulichung -> Download
AntonH
AntonH 02.10.2013 um 13:07:49 Uhr
Goto Top
Und wo muss ich die bedingte Formatierung hinmachen? Ich hab des grad mal ausprobiert und leider ist nix passiert!
muss ich den gesamt Bereich E bis T Makieren an welches Feld muss ich die Formatierung binden?
AntonH
AntonH 02.10.2013 um 13:08:28 Uhr
Goto Top
Kann ich leider nicht übers firmen netz laden
colinardo
colinardo 02.10.2013 um 13:13:51 Uhr
Goto Top
Zitat von @AntonH:
Kann ich leider nicht übers firmen netz laden

6f231bd05063e7a01aac53f8c7454330
AntonH
AntonH 11.10.2013 um 08:56:30 Uhr
Goto Top
Ich möchte das Thema nochmal neu aufgreifen, da ich irgendwie immer noch nicht zureckt komme.


3070be17357fe749e47ee1caab767dec


Hier ist nochmal das Bild wie es fertig aussehen soll! Ich versuch auch mal das Excel hochzuladen
colinardo
colinardo 11.10.2013 aktualisiert um 09:37:16 Uhr
Goto Top
Ich denke ich hab Dir doch alles geliefert, runterladen kannst du das Demo-Dokument doch mal zu Hause wenn du nicht in der Firma bist oder ? Ich denke mehr als das kann man nicht für dich tun ...

Grüße Uwe
AntonH
AntonH 11.10.2013 um 09:43:56 Uhr
Goto Top
Hi Uwe,

ich bin dir sehr dankbar für deine schnell Antwort.
Bei mir tut sich leider gar nix wenn dich den Bereich den du im Bild angegeben hast markiere und dafür die Bedingung eingebe!

Woran kann das liegen?

ich meine es sieht ja alles genau so aus wie im Beispiel??


Kennst du dich auch mit VBA Programmierung aus?
colinardo
colinardo 11.10.2013 aktualisiert um 09:49:36 Uhr
Goto Top
Zitat von @AntonH:
ich bin dir sehr dankbar für deine schnell Antwort.
Bei mir tut sich leider gar nix wenn dich den Bereich den du im Bild angegeben hast markiere und dafür die Bedingung
eingebe!

Woran kann das liegen?
Eventuell fügt dein Excel nach dem bestätigen der Formel, in diese noch zwei Anführungszeichen ein die das Problem verursachen, hatte das auch mal. Also öffne die Formel der bedingten Formatierung erneut und sehe nach ob Excel die Formel so formatiert hat:
="UND(......)"
wenn ja entfernst du die Anführungszeichen, danach sollte es also so aussehen:
=UND(.....)
Kennst du dich auch mit VBA Programmierung aus?
ja, klar damit geht das natürlich auch aber wieso umständlich wenn's so einfach geht.
Das Problem liegt definitiv noch bei dir ...

Grüße Uwe
AntonH
AntonH 11.10.2013 um 09:54:52 Uhr
Goto Top
2d7ffff1c61fe24e3edd54b537e58b24

so hab ich das jetzt gemacht

Und es nochmal aufgemacht und geschaut
AntonH
AntonH 11.10.2013 um 09:56:00 Uhr
Goto Top
2857850fd1ccabedba5852a6e5680351
colinardo
colinardo 11.10.2013 aktualisiert um 10:01:03 Uhr
Goto Top
mach mal das "Stop if true" raus .... und starte Excel mal neu...
AntonH
AntonH 11.10.2013 um 10:00:09 Uhr
Goto Top
leider keine veränderung
AntonH
AntonH 11.10.2013 um 10:03:54 Uhr
Goto Top
währe eine VBA lösung nicht doch leichter?

so ein Vergleich:

prüfe solang wie in Zeile zur Spalte A inhalt verfügbar ist.

When Start Wert gleich mit Wert in Zeitleist und Wert in Ende gleich mit Wert in Zeitleiste makiere diesen Bereich?
colinardo
colinardo 11.10.2013 um 10:17:05 Uhr
Goto Top
unverbesserlich ...., ich bau dir dazu was mit VBA...

Grüße Uwe
AntonH
AntonH 11.10.2013 um 10:37:04 Uhr
Goto Top
des wäre klasse! Danke Danke DAnke
colinardo
colinardo 11.10.2013 aktualisiert um 11:32:07 Uhr
Goto Top
Füge diesen Code im VBA-Editor in das passende Worksheet ein.
Ich habe jetzt mal angenommen das die angegebenen Quartale in Zeile 3 bis 100 stehen, solltest du mehr benötigen musst du du den Range in Zeile 2 entsprechend anpassen. Auch die angegebenen Quartale in Zeile 2 habe ich mal auf Spalte 5-21 (also 4 Jahre) begrenzt, dies kann in Zeile 7 angepasst werden zusätzlich musst du dann in Zeile 25 die Nummer 21 auch entprechend ändern. Die Farbe die die markierten Zellen erhalten lässt sich in der Sub markiereZelle angeben.
Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Application.Intersect(Range("C3:D20"), Target) Is Nothing Then  
        cellFrom = Cells(Target.Row, 3).Value
        cellTo = Cells(Target.Row, 4).Value
        If cellFrom <> "" And cellTo <> "" Then  
            mark = False
            For i = 5 To 21
                If mark = True Then
                    If LCase(Cells(2, i)) = LCase(cellTo) Then
                        markiereZelle Cells(Target.Row, i)
                        mark = False
                    Else
                        markiereZelle Cells(Target.Row, i)
                    End If
                Else
                    If LCase(Cells(2, i).Value) = LCase(cellFrom) Then
                        mark = True
                        markiereZelle Cells(Target.Row, i)
                    Else
                        clearZelle Cells(Target.Row, i)
                    End If
                End If
            Next
        Else
                clearZelle Range(Cells(Target.Row, 5), Cells(Target.Row, 21))
        End If
    End If
End Sub

Sub markiereZelle(r As Range)
    r.Interior.Color = rgbBlue
End Sub
Sub clearZelle(r As Range)
    r.Interior.Pattern = xlNone
End Sub

Grüße Uwe
AntonH
AntonH 11.10.2013 um 11:32:09 Uhr
Goto Top
ich hoffe du hälst mich nicht für total dumm, aber wenn ich es im VBA Editor bei dem passend Worksheet reinkopiere. und auf Play drücke, soll ich ein Makro auswähl, aber es gibt keins??
colinardo
colinardo 11.10.2013 aktualisiert um 11:35:20 Uhr
Goto Top
du brauchst nicht auf play drücken, die formatierung wird automatisch angewendet sobald du eine entsprechende Zelle im Range("C3:D100") im Worksheet änderst !!!
AntonH
AntonH 11.10.2013 um 11:35:42 Uhr
Goto Top
Du bist großartig Uwe!