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!
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!
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!
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!
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 218348
Url: https://administrator.de/forum/vba-code-fuer-eine-roadmap-218348.html
Ausgedruckt am: 23.12.2024 um 13:12 Uhr
23 Kommentare
Neuester Kommentar
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:
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
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)))
Grüße Uwe
Hier ein Demo-Dokument zur Veranschaulichung -> Download
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: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?
="UND(......)"
=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
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.
Grüße Uwe
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