Supportnet / Forum / Tabellenkalkulation
ColorIndex Nummern der Standard Farbpalette anzeigen lassen
Frage
Hallo an alle da draußen.
Ich habe 2 Problemchen. Das Erste:
Ich habe den Zellen B8 bis B14 Namen zugewiesen. Jeder Name hat eine andere Farbe. Von D8 bis D14 steht jeweils ein Startdatum und von E8 bis E14 ein Enddatum. In der Zeile 4 von H bis DZ habe ich das fortlaufende Datum eingetragen (01.06.2006 bis 01.10.2006).
Ich möchte nun in der Zeile 7 von H bis DZ einen farbigen Balken in Abhängigkeit der jeweiligen Start und Endtermine der Spalten D und E darstellen.
Folgende Überlegung möchte ich realisieren:
Wenn Start (D8)<=Datum(...$4)<Ende (E8) dann Farbe himmelblau oder
Wenn Start (D9)<=Datum(...$4)<Ende (E9) dann Farbe türkis...
Bedingte Formatierung habe ich nur noch eine frei, da 2 bereits belegt sind.
Vielleicht hat jemand einen Tipp für mich, wie ich das realisieren soll... Am liebsten mit VBA (auch wenn ich auf diesem Gebiet noch Anfänger bin)
So zweite Frage:
Was ich schon mitbekommen habe ist, dass das einfärben der Felder mit ColorIndex funktioniert. Allerdings fehlen mir die Indexnummern zu folgenden Farben:
-himmelblau
-türkis
-grelles grün
-gold
-helles orange
-hellgrün
-orange
Das sind Farben aus der Standard Palette. Allerdings werden in der VBA Hilfe nicht die Farben gezeigt, die ich brauche.
Bin für jeden Hinweis dankbar
bye
Antwort 1 von Saarbauer
Antwort 2 von coros
Hallo Zoe-Jane,
schau Dir mal auf meiner HP in der Rubrik Beispieldateien das Beispiel 60 an. Eventuell ist das ja schon so ähnlich wie Du Dir das vorgestellt hast.
Bei Fagen melde Dich bitte wieder.
MfG,
Oliver
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du ein
Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.
schau Dir mal auf meiner HP in der Rubrik Beispieldateien das Beispiel 60 an. Eventuell ist das ja schon so ähnlich wie Du Dir das vorgestellt hast.
Bei Fagen melde Dich bitte wieder.
MfG,
Oliver
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du ein
Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.
Antwort 3 von Zoe-Jane
Hallo Helmut.
Vielen Dank für die schnelle Antwort zu meinem 2. Problem. Das war das was ich brauchte.
Aber hast evtl. auch nen Text zu meinem erstgeschilderten Problem?
Vielen Dank für die schnelle Antwort zu meinem 2. Problem. Das war das was ich brauchte.
Aber hast evtl. auch nen Text zu meinem erstgeschilderten Problem?
Antwort 4 von Saarbauer
Hallo,
leider zur zeit keine passende Idee
Gruß
Helmut
leider zur zeit keine passende Idee
Gruß
Helmut
Antwort 5 von Zoe-Jane
Hallo auch dir coros.
Danke erstmal für die Info.
Hab mir die Sache mal angeschaut und bin am basteln.
Momentanes Problem dabei: ich brauchs nicht in jeder Zeile, sondern die Farben sollen folgend aufeinander in der Zeile 7 zurückgegeben werden.
MfG Zoe
Danke erstmal für die Info.
Hab mir die Sache mal angeschaut und bin am basteln.
Momentanes Problem dabei: ich brauchs nicht in jeder Zeile, sondern die Farben sollen folgend aufeinander in der Zeile 7 zurückgegeben werden.
MfG Zoe
Antwort 6 von coros
Hallo Zoe,
sorry, aber ich habe die Bedingungen für die Farbumschläge und die Farben, die in Zeile 7 dann dargestellt werden sollen, nicht richtig verstanden. Kannst Du die Bedingung noch mal etwas genauer erklären?
Danke!
MfG,
Oliver
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du ein
Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.
sorry, aber ich habe die Bedingungen für die Farbumschläge und die Farben, die in Zeile 7 dann dargestellt werden sollen, nicht richtig verstanden. Kannst Du die Bedingung noch mal etwas genauer erklären?
Danke!
MfG,
Oliver
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du ein
Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.
Antwort 7 von Zoe-Jane
Nochmal Hallo.
Also ich betrachte die Spalten B (Name), D (Start) und E (Ende) und die Zeilen 4 (von H bis DZ mit Datumsangaben 01.06.2006 bis 01.10.2006) und 7 (von H bis DZ noch nicht ausgefüllt-soll Farbe bekommen).
Bsp. Hr. X (Zeile 8, Farbe: blau) beginnt am 01.06. mit einem Projekt, das er am 10.06. beendet.
Hr. Y (Zeile 9, Farbe: grün) übernimmt am 10.06. das Projekt bis 15.07. ...
Nun sollen die Zeitabschnitte in einer Zeile, der Zeile 7, (von H bis DZ) zusammenhängend dargestellt werden. Also vom 01.06. (H7) bis 10.06. (Q7) ein blauer Balken und vom 10.06. (Q7) bis 15.07. (AZ 7) ein grüner Balken.
Ich hoffe das hilft dir weiter coros
Muss jetzt erstmal los und kann mir erst morgen wieder eure Tips anschauen. Also nicht böse sein, wenn ich mich heute nicht mehr melde.
Auf alle Fälle danke ich für die bisher erbrachte Hilfe und natürlich im Voraus für weitere Hilfestellungen.
In diesem Sinne schö Tach noch
MfG Zoe
Also ich betrachte die Spalten B (Name), D (Start) und E (Ende) und die Zeilen 4 (von H bis DZ mit Datumsangaben 01.06.2006 bis 01.10.2006) und 7 (von H bis DZ noch nicht ausgefüllt-soll Farbe bekommen).
Bsp. Hr. X (Zeile 8, Farbe: blau) beginnt am 01.06. mit einem Projekt, das er am 10.06. beendet.
Hr. Y (Zeile 9, Farbe: grün) übernimmt am 10.06. das Projekt bis 15.07. ...
Nun sollen die Zeitabschnitte in einer Zeile, der Zeile 7, (von H bis DZ) zusammenhängend dargestellt werden. Also vom 01.06. (H7) bis 10.06. (Q7) ein blauer Balken und vom 10.06. (Q7) bis 15.07. (AZ 7) ein grüner Balken.
Ich hoffe das hilft dir weiter coros
Muss jetzt erstmal los und kann mir erst morgen wieder eure Tips anschauen. Also nicht böse sein, wenn ich mich heute nicht mehr melde.
Auf alle Fälle danke ich für die bisher erbrachte Hilfe und natürlich im Voraus für weitere Hilfestellungen.
In diesem Sinne schö Tach noch
MfG Zoe
Antwort 8 von coros
Hallo Zoe,
mit nachfolgendem Makro sollte das funktionieren, was Du Dir vorgestellt hast. Kopie es bitte in ein StandardModul und starte es z.B. in über eine Schaltfläche.
Hier wird jede Zeile, in der in Spalte B ein Name steht, in Spalte D und E nach Start- und Enddatum mit dem Bereich H4:DZ4 verglichen. Die Zeiträume zwischen dem Start- und Enddatum werden in Zeile mit der Farbe gefärbt, die in Spalte B, also beim Namen, die Hintergrundfarbe hat. Als Beispiel, hat der Name in Spalte B die Hintergrundfarbe rot, wird der Bereich in Zeile 7, der zwischen dem Star- und Enddatum liegt, rot gefärbt.
Ich hoffe, Du meinetst das so. bei Fragen oder Änderungswünschen melde Dich bitte.
MfG,
Oliver
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du ein
Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.
mit nachfolgendem Makro sollte das funktionieren, was Du Dir vorgestellt hast. Kopie es bitte in ein StandardModul und starte es z.B. in über eine Schaltfläche.
Option Explicit
Sub Zellen_nach_Datum_färben()
Dim iRow As Long, iCol As Integer, Anfang As Integer, Ende As Integer, Farbe As Integer
For iRow = 8 To Range("B65536").End(xlUp).Row
Farbe = Cells(iRow, 2).Interior.ColorIndex
For iCol = 8 To 130
If Cells(iRow, 4) = Cells(4, iCol) Then
Anfang = iCol
GoTo Weiter
End If
Next
Weiter:
For iCol = 8 To 130
If Cells(iRow, 5) = Cells(4, iCol) Then
Ende = iCol
GoTo Ende
End If
Next
Ende:
Range(Cells(7, Anfang), Cells(7, Ende)).Interior.ColorIndex = Farbe
Next
End Sub
Hier wird jede Zeile, in der in Spalte B ein Name steht, in Spalte D und E nach Start- und Enddatum mit dem Bereich H4:DZ4 verglichen. Die Zeiträume zwischen dem Start- und Enddatum werden in Zeile mit der Farbe gefärbt, die in Spalte B, also beim Namen, die Hintergrundfarbe hat. Als Beispiel, hat der Name in Spalte B die Hintergrundfarbe rot, wird der Bereich in Zeile 7, der zwischen dem Star- und Enddatum liegt, rot gefärbt.
Ich hoffe, Du meinetst das so. bei Fragen oder Änderungswünschen melde Dich bitte.
MfG,
Oliver
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du ein
Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.
Antwort 9 von Zoe-Jane
Einen wunderschönen Guten Morgen Coros.
Vielen Dank für diese Zeilen. Sie machen genau das was ich will.
Du hast mir echt den Tag gerettet, denn damit kann ich weiter arbeiten.
Mal noch ne Frage am Rande:
Ich würde mich gern intensiver mit der VBA Programmierung befassen, kannst du mir evtl. Literatur empfehlen, mit der ich das im Selbststudium relativ einfach hinbekomme?
Danke nochmal
MfG Zoe
Vielen Dank für diese Zeilen. Sie machen genau das was ich will.
Du hast mir echt den Tag gerettet, denn damit kann ich weiter arbeiten.
Mal noch ne Frage am Rande:
Ich würde mich gern intensiver mit der VBA Programmierung befassen, kannst du mir evtl. Literatur empfehlen, mit der ich das im Selbststudium relativ einfach hinbekomme?
Danke nochmal
MfG Zoe
Antwort 10 von coros
Moin Zoe,
sorry, ohne jetzt überheblich klingen zu wollen, aber ich habe über VBA (Visual Basic for Application), das ja in Excel zum Einsatz kommt, keine Literatur. Ich habe das alles durch viel lesen in Foren via Learning by doing selbst beigebracht. Mir hat sicherlich viel dabei geholfen, dass ich aus beruflichen Gründen viel in Visual Basic (nicht zu verwechseln mit VBA, ist ähnlich aber nicht das Gleiche) programmiere. Da ist dann der Schritt zu VBA nicht mehr so groß.
Eventuell hat ja jemand anderes, der Deine Frage hier ließt, einen Buchvorschlag für Dich. Ansonsten kann ich Dir nur empfehlen, z.B. in dem Forum www.VB-Fun.de oder in der microsoft.public.de.excel- Group vorbei zu schauen, da kann man viel lernen, wenn es um Excel- VBA geht.
MfG,
Oliver
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du ein
Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.
sorry, ohne jetzt überheblich klingen zu wollen, aber ich habe über VBA (Visual Basic for Application), das ja in Excel zum Einsatz kommt, keine Literatur. Ich habe das alles durch viel lesen in Foren via Learning by doing selbst beigebracht. Mir hat sicherlich viel dabei geholfen, dass ich aus beruflichen Gründen viel in Visual Basic (nicht zu verwechseln mit VBA, ist ähnlich aber nicht das Gleiche) programmiere. Da ist dann der Schritt zu VBA nicht mehr so groß.
Eventuell hat ja jemand anderes, der Deine Frage hier ließt, einen Buchvorschlag für Dich. Ansonsten kann ich Dir nur empfehlen, z.B. in dem Forum www.VB-Fun.de oder in der microsoft.public.de.excel- Group vorbei zu schauen, da kann man viel lernen, wenn es um Excel- VBA geht.
MfG,
Oliver
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du ein
Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.
Antwort 11 von Zoe-Jane
OK Danke coros.
Hab da noch ne Frage zu dem von dir geschriebenen Programm.
Wie sieht es mit Überschneidungen aus? Habe festgestellt, dass sich bei weiteren Einträgen einige Daten überschneiden. Z.B. Herr X vom 01.06.-15.06. und Herr Y schon vom 10.06.-14.07 oder so. Wie muss ich das Programm anpassen, dass es mir die Farben immer vom Endtermin des letzten Ereignisses ausgehend darstellt? Also laut Bsp. statt vom 01.06-15.06 nur bis zum Anfang von Herrn Y also 01.06.-10.06 in z.B. grün und vom 10.06.-14.07. dann die Farbe für Herrn Y...
Hab da noch ne Frage zu dem von dir geschriebenen Programm.
Wie sieht es mit Überschneidungen aus? Habe festgestellt, dass sich bei weiteren Einträgen einige Daten überschneiden. Z.B. Herr X vom 01.06.-15.06. und Herr Y schon vom 10.06.-14.07 oder so. Wie muss ich das Programm anpassen, dass es mir die Farben immer vom Endtermin des letzten Ereignisses ausgehend darstellt? Also laut Bsp. statt vom 01.06-15.06 nur bis zum Anfang von Herrn Y also 01.06.-10.06 in z.B. grün und vom 10.06.-14.07. dann die Farbe für Herrn Y...
Antwort 12 von Zoe-Jane
Nochmal ich an coros...
Vergiss das mit den Überschneidungen, das paßt schon so.
Hab dafür ne andere Frage:
Ich möchte den Bereich einschränken. Damit meine ich, dass in Zeile 7 nur die Auswertung der der Zeilen 8 bis 16 dargestellt werden sollen. Das hab ich hingekriegt mit der Einschränkung
For iRow=8 to Range("B16").End(xlUp).Row
Nun würde ich aber gern eine nächste Abfrage starten für den Bereich Zeilen 19-27 und die Farbausgabe in Zeile 18.
Kann man das für das ganze Blatt so realisieren, dass die gleiche Anzahl an Zellen verwendet wird? Konkret: die Ausgabe der Farbe in einer Zeile der Zahlenreihe 7,18,29,... entspricht und sich auf die jeweils folgenden 8-16,19-27,30-38,... Zellen bezieht.
Danke und MfG Zoe
Vergiss das mit den Überschneidungen, das paßt schon so.
Hab dafür ne andere Frage:
Ich möchte den Bereich einschränken. Damit meine ich, dass in Zeile 7 nur die Auswertung der der Zeilen 8 bis 16 dargestellt werden sollen. Das hab ich hingekriegt mit der Einschränkung
For iRow=8 to Range("B16").End(xlUp).Row
Nun würde ich aber gern eine nächste Abfrage starten für den Bereich Zeilen 19-27 und die Farbausgabe in Zeile 18.
Kann man das für das ganze Blatt so realisieren, dass die gleiche Anzahl an Zellen verwendet wird? Konkret: die Ausgabe der Farbe in einer Zeile der Zahlenreihe 7,18,29,... entspricht und sich auf die jeweils folgenden 8-16,19-27,30-38,... Zellen bezieht.
Danke und MfG Zoe
Antwort 13 von coros
Hallo Zoe,
da hast Du glück, dass ich vorm Abschicken des Beitrags von mir noch mal aktualisiert habe. Denn ich dachte Du hattest Dich irgendwie vertan mit Deinen Beispielen. Denn das Makro machte ja bereits dass immer der Anfangstermin einen bereits vorhandenen Termin überschrieben hat. Ich dachte nun, bzw. teilweise hattest Du es ja auch so geschrieben (daher dachte ich, dass Du Dich irgendwie vertan hast) dass immer bei Überschneidung der neue Termin am Ende des Enddatums des Vorgängers erst angezeigt werden soll. Dafür hatte ich ach das Makro abgeändert. Aber das hast Du ja nun mitbekommen, dass das Makro aus Antwort 8 das macht. Aber trotzdem poste ich auch mal das abgeänderte Makro nun hier, dass immer erst nach dem Enddatum des Vorgängers den neuen Termin einträgt. Eventuell kann es ja jemand gebrauchen.
Nun zu Deiner neuen Frage, da musst Du diesen Code mehrfach aneinanderhängen und immer den Start- und Endparameter der Schleife verändern. Das würde für Dein Beispiel dann folgendermaßen aussehen:
Das ist erst mal die einfachste Lösung. Wenn es nicht zu viele Bereich sind, die damit abgefragt werden müssen, funktioniert es auch ganz gut. Ansonsten muss man sich da mal etwas anderes überlegen.
MfG,
Oliver
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du ein
Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.
da hast Du glück, dass ich vorm Abschicken des Beitrags von mir noch mal aktualisiert habe. Denn ich dachte Du hattest Dich irgendwie vertan mit Deinen Beispielen. Denn das Makro machte ja bereits dass immer der Anfangstermin einen bereits vorhandenen Termin überschrieben hat. Ich dachte nun, bzw. teilweise hattest Du es ja auch so geschrieben (daher dachte ich, dass Du Dich irgendwie vertan hast) dass immer bei Überschneidung der neue Termin am Ende des Enddatums des Vorgängers erst angezeigt werden soll. Dafür hatte ich ach das Makro abgeändert. Aber das hast Du ja nun mitbekommen, dass das Makro aus Antwort 8 das macht. Aber trotzdem poste ich auch mal das abgeänderte Makro nun hier, dass immer erst nach dem Enddatum des Vorgängers den neuen Termin einträgt. Eventuell kann es ja jemand gebrauchen.
Option Explicit
Sub Zellen_nach_Datum_färben()
Dim iRow As Long, iCol As Integer, Anfang As Integer, Ende As Integer, Farbe As Integer, iColColor As Integer
Rows(7).Interior.ColorIndex = xlNone
For iRow = 8 To Range("B65536").End(xlUp).Row
Farbe = Cells(iRow, 2).Interior.ColorIndex
For iCol = 8 To 130
If Cells(iRow, 4) = Cells(4, iCol) Then
For iColColor = iCol To 130
If Cells(7, iColColor).Interior.ColorIndex = xlNone Then
Anfang = iColColor
GoTo Weiter
End If
Next
End If
Next
Weiter:
For iCol = 8 To 130
If Cells(iRow, 5) = Cells(4, iCol) Then
If Cells(7, iCol).Interior.ColorIndex = xlNone Then
Ende = iCol
GoTo Ende
Else
GoTo Ende1
End If
End If
Next
Ende:
Range(Cells(7, Anfang), Cells(7, Ende)).Interior.ColorIndex = Farbe
Ende1:
Next
End Sub
Nun zu Deiner neuen Frage, da musst Du diesen Code mehrfach aneinanderhängen und immer den Start- und Endparameter der Schleife verändern. Das würde für Dein Beispiel dann folgendermaßen aussehen:
Option Explicit
Sub Zellen_nach_Datum_färben()
Dim iRow As Long, iCol As Integer, Anfang As Integer, Ende As Integer, Farbe As Integer
For iRow = 8 To 16
Farbe = Cells(iRow, 2).Interior.ColorIndex
For iCol = 8 To 130
If Cells(iRow, 4) = Cells(4, iCol) Then
Anfang = iCol
GoTo Weiter
End If
Next
Weiter:
For iCol = 8 To 130
If Cells(iRow, 5) = Cells(4, iCol) Then
Ende = iCol
GoTo Ende
End If
Next
Ende:
Range(Cells(7, Anfang), Cells(7, Ende)).Interior.ColorIndex = Farbe
Next
For iRow = 19 To 27
Farbe = Cells(iRow, 2).Interior.ColorIndex
For iCol = 8 To 130
If Cells(iRow, 4) = Cells(4, iCol) Then
Anfang = iCol
GoTo Weiter
End If
Next
Weiter:
For iCol = 8 To 130
If Cells(iRow, 5) = Cells(4, iCol) Then
Ende = iCol
GoTo Ende
End If
Next
Ende:
Range(Cells(18, Anfang), Cells(18, Ende)).Interior.ColorIndex = Farbe
Next
For iRow = 30 To 38
Farbe = Cells(iRow, 2).Interior.ColorIndex
For iCol = 8 To 130
If Cells(iRow, 4) = Cells(4, iCol) Then
Anfang = iCol
GoTo Weiter
End If
Next
Weiter:
For iCol = 8 To 130
If Cells(iRow, 5) = Cells(4, iCol) Then
Ende = iCol
GoTo Ende
End If
Next
Ende:
Range(Cells(29, Anfang), Cells(29, Ende)).Interior.ColorIndex = Farbe
Next
Rem usw.........
End Sub
Das ist erst mal die einfachste Lösung. Wenn es nicht zu viele Bereich sind, die damit abgefragt werden müssen, funktioniert es auch ganz gut. Ansonsten muss man sich da mal etwas anderes überlegen.
MfG,
Oliver
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du ein
Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.
Antwort 14 von Zoe-Jane
Hallo Oli.
Ich sag nur: Merci Cheri (kurzum Danke).
Mach weiter so.
Falls ich wieder mal ein Problem haben sollte, lesen wir vielleicht wieder voneinander.
Bis dahin lass es dir gut gehen...
MfG Zoe
Ich sag nur: Merci Cheri (kurzum Danke).
Mach weiter so.
Falls ich wieder mal ein Problem haben sollte, lesen wir vielleicht wieder voneinander.
Bis dahin lass es dir gut gehen...
MfG Zoe