ich würde gerne eine Farbtabelle erstellen, in der jeweils der
RGB-Wert über
0, 10, 20, 25, 30, 33, 40, 50, 60, 66, 70, 75, 80, 90, 100%
variiert wird. Insgesamt komme ich damit auf 3375 Farben.
Hat jemand eine Idee, ob und wie sich das in ein Makro/Script packen
lässt?
Zu jeder Farbe sollen auch die RGB-Werte angezeigt werden.
Mir reicht natürlich auch ein Download-Link. Eventuell hat das ja auch
jemand schon einmal fertiggestellt und mag mich per PM erfreuen.
Danke und Grüße
Matthias
> ich würde gerne eine Farbtabelle erstellen, in der jeweils der
> RGB-Wert über
>
> 0, 10, 20, 25, 30, 33, 40, 50, 60, 66, 70, 75, 80, 90, 100%
Ich versteh nicht genau, was Du erreichen möchtest.
Ein RGB Wert besteht aus 3 Werten.
> variiert wird. Insgesamt komme ich damit auf 3375 Farben.
Die Farbpalette von Excel kann so oder so nur 56 Farben
aufnehmen.
> Hat jemand eine Idee, ob und wie sich das in ein Makro/Script packen
> lässt?
>
> Zu jeder Farbe sollen auch die RGB-Werte angezeigt werden.
Die nachfolgende Prozedur ist nur ein kleines Beispiel, wie Du die
Farbpalette von Excel manipulieren kannst. Nach irgendeinem
Zufallsprinzip werden hier die Farben abgefüllt, aber wie gesagt,
mehr als 56 verschiedene Farben auf einmal geht nicht.
Den Farbindex, sowie die RGB-Zufallswerte werden in Zellen
geschrieben.
Sub NeueFarben()
Dim i As byte
Dim r As Long
Dim g As Long
Dim b As Long
Cells(1, 1) = "Index"
Cells(1, 2) = "Rot"
Cells(1, 3) = "Grün"
Cells(1, 4) = "Blau"
For i = 1 To 56
r = Rnd() * 256
g = Rnd() * 256
b = Rnd() * 256
ActiveWorkbook.Colors(i) = RGB(r, g, b)
With Cells(i + 1, 1)
.Interior.Color = RGB(r, g, b)
.Value = i
End With
Cells(i + 1, 2) = r
Cells(i + 1, 3) = g
Cells(i + 1, 4) = b
Next i
End Sub
Mit dieser Proezdur kannst Du die Original-Excel-Farben
wieder herstellen:
Sub OriginalFarben()
ActiveWorkbook.ResetColors
End Sub
--
Es liebs Grüessli
Monika Weber [Microsoft MVP für Excel]
http://www.jumper.ch (Office Help Desk)
http://excel.codebooks.de (Das Excel-VBA Codebook)
Hallo Monika,
> > ich würde gerne eine Farbtabelle erstellen, in der jeweils der
> > RGB-Wert über
> >
> > 0, 10, 20, 25, 30, 33, 40, 50, 60, 66, 70, 75, 80, 90, 100%
>
> Ich versteh nicht genau, was Du erreichen möchtest.
Ich möchte die Farbe {R,G,B} über die Werte 0%, 10%, 20% ...
variieren.
> Ein RGB Wert besteht aus 3 Werten.
Richtig.
> > variiert wird. Insgesamt komme ich damit auf 3375 Farben.
>
> Die Farbpalette von Excel kann so oder so nur 56 Farben
> aufnehmen.
Aber um eine Tabelle zu erstellen, kann ich doch den Wert angeben und
damit genau ein Feld fomatieren?
0 0 0 [farbiges Feld]
0 0 25 [farbiges Feld]
0 0 51 [farbiges Feld]
0 0 64 [farbiges Feld]
0 0 77 [farbiges Feld]
...
...
...
0 25 0 [farbiges Feld]
0 25 25 [farbiges Feld]
0 25 51 [farbiges Feld]
0 25 64 [farbiges Feld]
0 25 77 [farbiges Feld]
...
...
...
tbc bis
...
...
...
255 255 191 [farbiges Feld]
255 255 205 [farbiges Feld]
255 255 230 [farbiges Feld]
255 255 255 [farbiges Feld]
> > Hat jemand eine Idee, ob und wie sich das in ein Makro/Script
> > packen lässt?
> >
> > Zu jeder Farbe sollen auch die RGB-Werte angezeigt werden.
>
> Die nachfolgende Prozedur ist nur ein kleines Beispiel, wie Du die
> Farbpalette von Excel manipulieren kannst. Nach irgendeinem
> Zufallsprinzip
^^^^^^^^^^^^^^
Ich benötige das ganze eigentlich sehr systematisch.
> werden hier die Farben abgefüllt, aber wie gesagt,
> mehr als 56 verschiedene Farben auf einmal geht nicht.
Ich brauche sie nicht auf einmal, ich brauche sie lediglich
nacheinander.
Obiges verursacht bei mir einen Absturz von Excel. Warum, weiß ich
leider nicht (XL 97 SR1).
> Mit dieser Proezdur kannst Du die Original-Excel-Farben
> wieder herstellen:
>
> Sub OriginalFarben()
> ActiveWorkbook.ResetColors
> End Sub
Bei herber.de habe ich folgendes gefunden:
Option Explicit
Sub RGBListe()
Const SCHRITT = 25 'Je kleiner umso differenzierter
Dim i1%, i2%, i3%
Dim Zeile As Long
Zeile = 1
Application.ScreenUpdating = False
For i1 = 0 To 255 Step SCHRITT
For i2 = 0 To 255 Step SCHRITT
For i3 = 0 To 255 Step SCHRITT
Cells(Zeile, 1).Interior.Color = RGB(i1, i2, i3)
Cells(Zeile, 2).Value = i1
Cells(Zeile, 3).Value = i2
Cells(Zeile, 4).Value = i3
Zeile = Zeile + 1
Next i3
Next i2
Next i1
Application.ScreenUpdating = True
End Sub
Das trifft es eigentlich schon ganz gut, nur steht da zuerst die Farbe
und dann die Werte. Außerdem werden für verschiedene RGB-Werte gleiche
Farben ausgegeben.
Danke soweit und Grüße
Matthias
> > Die nachfolgende Prozedur ist nur ein kleines Beispiel, wie Du die
> > Farbpalette von Excel manipulieren kannst. Nach irgendeinem
> > Zufallsprinzip
> ^^^^^^^^^^^^^^
>
> Ich benötige das ganze eigentlich sehr systematisch.
Das Beispiel war ja auch nur ein Lösungsansatz.
Sozusagen ein Denkanstoss, wie man die Farbpalette
verändern kann :-)
[Herber-Beispiel]
> Das trifft es eigentlich schon ganz gut, nur steht da zuerst die Farbe
> und dann die Werte. Außerdem werden für verschiedene RGB-Werte gleiche
> Farben ausgegeben.
Freut mich, wenn Du gefunden hast, wonach Du suchst.
Hallo Monika,
> > > Die nachfolgende Prozedur ist nur ein kleines Beispiel, wie Du
> > > die Farbpalette von Excel manipulieren kannst. Nach irgendeinem
> > > Zufallsprinzip
> > ^^^^^^^^^^^^^^
> >
> > Ich benötige das ganze eigentlich sehr systematisch.
>
> Das Beispiel war ja auch nur ein Lösungsansatz.
> Sozusagen ein Denkanstoss, wie man die Farbpalette
> verändern kann :-)
Habe meinen PC nochmal neu gestartet, nun tut Dein Code.
Das ist ja hübsch bunt. Woran muss ich drehen, damit das ganze etwas
übersichtlicher wird? Denn so wie es jetzt ist, werden ja
ausschließlich Zufallswerte erzeugt, oder?
> [Herber-Beispiel]
> > Das trifft es eigentlich schon ganz gut, nur steht da zuerst die
> > Farbe und dann die Werte. Außerdem werden für verschiedene
> > RGB-Werte gleiche Farben ausgegeben.
>
>
> Freut mich, wenn Du gefunden hast, wonach Du suchst.
Naja, es ist nicht so 100%, aber ich bastele mal dran rum ;-)
Danke und Grüße
Matthias
> http://excel.codebooks.de (Das Excel-VBA Codebook)
... muss ich mir mal angucken.
unter Download nach
und lade dir die Datei
RGB_Farben_finden_Progbar.zip
runter
info:
Sie können Rot Grün Blau Werte einzeln bestimmen und in einer
Vorschau das Ergebnis begutachten.
Die Werte werden auf Wunsch in die Zwischenablage kopiert
und können direkt in der Entwicklungsumgebung eingefügt werden.
Beispiel CommandButton1.BackColor = RGB(100, 0, 100)
eine kurze Antwort wäre nett
ciao Peter
"Matthias Kryn" <usene...@planet-interkom.de> schrieb im Newsbeitrag
news:3ea59cc9$0$18097$9b4e...@newsread4.arcor-online.net...
Hallo Peter,
> RGB_Farben_finden_Progbar.zip
> info:
> Sie können Rot Grün Blau Werte einzeln bestimmen und in einer
> Vorschau das Ergebnis begutachten.
> Die Werte werden auf Wunsch in die Zwischenablage kopiert
> und können direkt in der Entwicklungsumgebung eingefügt werden.
>
> Beispiel CommandButton1.BackColor = RGB(100, 0, 100)
das ist auch nicht das Richtige.
Ich möchte ja keine einzelne Farbe herstellen, sondern viele in einer
Übersicht haben.
Gut ist das große Farbfeld, um die Farbe in ihrer Wirkung zu sehen.
Ansonsten ist es wirklich nicht so umständlich wie das Hangeln durch
Extras/Optionen/Farben/Anpassen. Was fehlt ist allerding die
Möglichkeit, die hergestellte Farbe auch zu benutzen (und nicht nur
die RGB-Werte auszulesen).
Danke und Grüße
Matthias
> Habe meinen PC nochmal neu gestartet, nun tut Dein Code.
>
> Das ist ja hübsch bunt. Woran muss ich drehen, damit das ganze etwas
> übersichtlicher wird? Denn so wie es jetzt ist, werden ja
> ausschließlich Zufallswerte erzeugt, oder?
>
> > [Herber-Beispiel]
> > > Das trifft es eigentlich schon ganz gut, nur steht da zuerst die
> > > Farbe und dann die Werte. Außerdem werden für verschiedene
> > > RGB-Werte gleiche Farben ausgegeben.
>
> Naja, es ist nicht so 100%, aber ich bastele mal dran rum ;-)
Auch bei diesem Beispiel hast Du nicht mehr als 56 Farben,
denn die selbe Farbe kommt jeweils mehrmals vor.
Das Ganze kannst Du auch so haben (ohne mehrmals die
selbe Farbe):
Sub Rot()
Dim i As Byte
Dim c As Long
For i = 1 To 56
c = (i * 4.56)
ActiveWorkbook.Colors(i) = RGB(c, 0, 0)
Cells(i, 1).Interior.Color = RGB(c, 0, 0)
Next i
Application.CommandBars("Fill Color").Visible = True
End Sub
Wenn Du Grün haben möchtest, dann ändere RGB in:
RGB(0,c,0)
Blau:
RGB(0,0,c)
Violett:
RGB(c,0,c)
usw.
Aber wie gesagt, bei 56 Farben ist Schluss. Da kannst Du
drehen und wenden wie Du willst.
--
Es liebs Grüessli
Monika Weber [Microsoft MVP für Excel]
http://www.jumper.ch (Office Help Desk)
Hallo Monika,
> > > [Herber-Beispiel]
> > > > Das trifft es eigentlich schon ganz gut, nur steht da zuerst
> > > > die Farbe und dann die Werte. Außerdem werden für verschiedene
> > > > RGB-Werte gleiche Farben ausgegeben.
> >
> > Naja, es ist nicht so 100%, aber ich bastele mal dran rum ;-)
>
>
> Auch bei diesem Beispiel hast Du nicht mehr als 56 Farben,
> denn die selbe Farbe kommt jeweils mehrmals vor.
Stimmt. Gibt hypsche Muster, die mir allerdings nicht wirklich[tm]
helfen.
> Das Ganze kannst Du auch so haben (ohne mehrmals die
> selbe Farbe):
>
> Sub Rot()
> Dim i As Byte
> Dim c As Long
> For i = 1 To 56
> c = (i * 4.56)
> ActiveWorkbook.Colors(i) = RGB(c, 0, 0)
> Cells(i, 1).Interior.Color = RGB(c, 0, 0)
> Next i
> Application.CommandBars("Fill Color").Visible = True
> End Sub
>
> Wenn Du Grün haben möchtest, dann ändere RGB in:
> RGB(0,c,0)
>
> Blau:
> RGB(0,0,c)
>
> Violett:
> RGB(c,0,c)
>
> usw.
Interessant. Da werde ich mich auch einmal durchwursteln und beim
"usw." herumprobieren.
> Aber wie gesagt, bei 56 Farben ist Schluss. Da kannst Du
> drehen und wenden wie Du willst.
*strampel* *rabäh*. Hilft wohl nix ;-)
Vielen(!) Dank und Grüße
Matthias
Hallo Monika,
> Das Ganze kannst Du auch so haben (ohne mehrmals die
> selbe Farbe):
>
> Sub Rot()
> Dim i As Byte
> Dim c As Long
> For i = 1 To 56
> c = (i * 4.56)
> ActiveWorkbook.Colors(i) = RGB(c, 0, 0)
> Cells(i, 1).Interior.Color = RGB(c, 0, 0)
> Next i
> Application.CommandBars("Fill Color").Visible = True
> End Sub
>
> Wenn Du Grün haben möchtest, dann ändere RGB in:
> RGB(0,c,0)
>
> Blau:
> RGB(0,0,c)
>
> Violett:
> RGB(c,0,c)
>
> usw.
Super! Vielen Dank! Das ist schon sehr, sehr hilfreich.
Grüße
Matthias
Hallo Monika,
> Die Farbpalette von Excel kann so oder so nur 56 Farben
> aufnehmen.
Wieso eigentlich nur 56 und nicht - wie ich erwarten würde - 2^6=64
Farben?
Wo werden die anderen 8 Farben "verbraten"?
(Und ganz btw: warum werden nicht alle 56 Farben auf einmal angezeigt,
sondern nur 40?)
Grüße
Matthias
> Super! Vielen Dank! Das ist schon sehr, sehr hilfreich.
Danke fürs Feedback.
Freut mich, wenn ich helfen konnte :-))
>> Aber wie gesagt, bei 56 Farben ist Schluss. Da kannst Du
>> drehen und wenden wie Du willst.
>*strampel* *rabäh*. Hilft wohl nix ;-)
Ich hätte natürlich auch lieber alle 16777216 RGB-Farben :o) ...
> > Die Farbpalette von Excel kann so oder so nur 56 Farben
> > aufnehmen.
>
> Wieso eigentlich nur 56 und nicht - wie ich erwarten würde - 2^6=64
> Farben?
Gute Frage.
Vermutlich hat das Ganze auch mit dem Speicherbedarf zu tun.
Was wenn nun alle 16777216 (=256^3) RGB-Farben verfügbar wären?
Dann würde vielleicht einer auf die Idee kommen jede der 16777216 Zellen
(=256 Spalten * 65536 Zeilen) in einer anderen Farbe einzufärben ;o)
Das wäre vermutlich zuviel des Guten.
> Wo werden die anderen 8 Farben "verbraten"?
>
> (Und ganz btw: warum werden nicht alle 56 Farben auf einmal angezeigt,
> sondern nur 40?)
... die unergründlichen Tiefen von Microsoft.
MfG Frank
_________________________________________________
Frank Arendt-Theilen, Microsoft MVP für Excel, Hameln
eMail: Thei...@t-online.de, Homepage: http://www.xl-faq.de
Hallo Monika,
> > > Die Farbpalette von Excel kann so oder so nur 56 Farben
> > > aufnehmen.
> >
> > Wieso eigentlich nur 56 und nicht - wie ich erwarten würde -
> > 2^6=64 Farben?
>
> Gute Frage.
>
> Vermutlich hat das Ganze auch mit dem Speicherbedarf zu tun.
> Was wenn nun alle 16777216 (=256^3) RGB-Farben verfügbar wären?
*träum* Naja, das menschliche Auge kann etwa 1 Million Farben
unterschieden. Wenn 2^16 = 256^2 = 65536 Farben darstellbar wären,
würde es wahrscheinlich den meisten Anwendern schon genügen.
> Dann würde vielleicht einer auf die Idee kommen jede der 16777216
> Zellen (=256 Spalten * 65536 Zeilen) in einer anderen Farbe
> einzufärben ;o)
Jau, das würde ich glatt machen ;-)
Grüße
Matthias
Hallo Frank,
> schau einmal auf meine Homepage:
> http://www.xl-faq.de/artikel/artikel02.htm
Danke, das sind auch Ansatzpunkte.
Wieso werden die Farbplätze nicht aufeinanderfolgend, sondern querbunt
gewürfelt vergeben?
Grüße
Matthias
P.S. Klick auf's Home-Logo bringt 404. Irgendwas ist da fasclh
verlinkt.
mal eine - vielleicht ketzerische - Frage: Warum muß das in Excel sein?
Excel ist ein Programm, in dem mal hier und da Farbe angewendet wird, um
etwas hervorzuheben, aber es ist kein Grafik-Programm. Sowohl in PowerPoint
als auch in Word kannst Du auf mehr Farben zugreifen. Vielleicht läßt sich
mit einem dieser beiden Programme ja Deine gewünschte Tabelle eher
realisieren. Leider kann ich Dir hier keine konkrete Hilfestellung geben, da
ich (noch) kaum VBA-Kenntnisse habe.
Viele Grüße
Ute
"Matthias Kryn" <usene...@planet-interkom.de> schrieb im Newsbeitrag
news:3ea59cc9$0$18097$9b4e...@newsread4.arcor-online.net...
Hallo Ute,
(sitzt Du am Hasenpfad?)
> mal eine - vielleicht ketzerische - Frage:
Nö, ist schon berechtigt.
> Warum muß das in Excel
> sein? Excel ist ein Programm, in dem mal hier und da Farbe
> angewendet wird, um etwas hervorzuheben, aber es ist kein
> Grafik-Programm.
Das ist richtig.
> Sowohl in PowerPoint als auch in Word kannst Du
> auf mehr Farben zugreifen.
Ja, auch das stimmt. Ich kann zwar auf mehr Farben zugreifen, aber um
eine systematische Farbtabelle zu erstellen, ist - soweit ich weiß -
Handarbeit angesagt. Zumindest für Excel weiß ich, dass ich Zellen
automatisch formatieren kann. In Word und PP habe ich a priori erst
einmal gar keine Zellen, die ich formatieren könnte.
Dabei wäre es mir völlig egal, ob ich eine Word-Tabelle habe, die
meinen Anforderungen entspricht. Hauptsache, ich kann sie automagisch
erstellen (lassen) - und nach Möglichkeit die Farben auch noch nach
meinen Wünschen in den Variablen bestimmen (z.B. Farbverlauf von
Rostrot nach Himmelblau o.ä.).
Grüße
Matthias
P.S. Bitte zukünftig kein TOFU mehr, das ist mühsamer zu lesen.
>Wieso werden die Farbplätze nicht aufeinanderfolgend, sondern querbunt
>gewürfelt vergeben?
Stell dir 56 leere Eimer vor. Diese Eimer haben eine Nummer von 1 bis
56 (ColorIndex). In diese "Eimer" (Farbplätze) kann eine beliebig
definierte Farbe gefüllt werden. Die XL-Programmierer haben eine
Standard-Palette definiert, nach welchen Kriterien auch immer. Diese
Definition kannst du für dich auch dauerhaft abändern, in dem du eine
Mustervorlage (Mappe.xlt im XLStart-Verzeichnis) mit deinen
Farbdefinitionen erstellst. Du musst dann aber immer daran denken, das
du die Farbplatznummer nicht mit der Farbnummer (RGB-Wert)
verwechselst.
Hallo Frank,
> vielen Dank für den Link-Hinweis!
Naja, geben und nehmen :-) Ja, jetzt tut es richtig.
> > Wieso werden die Farbplätze nicht aufeinanderfolgend, sondern
> > querbunt gewürfelt vergeben?
>
> Stell dir 56 leere Eimer vor. Diese Eimer haben eine Nummer von 1
> bis 56 (ColorIndex). In diese "Eimer" (Farbplätze) kann eine
> beliebig definierte Farbe gefüllt werden. Die XL-Programmierer
> haben eine Standard-Palette definiert, nach welchen Kriterien auch
> immer.
Soweit ist mir das klar, bloß warum sind die Plätze 1-56 nicht
hintereinander, sondern kreuz und quer verteilt? Oberste Zeile, 4.
Platz vom links ist eben nicht die Nummer 4, wie ich das erwarten
würde. Doofe Programmierer, doofe. So.
> Diese Definition kannst du für dich auch dauerhaft abändern,
> in dem du eine Mustervorlage (Mappe.xlt im XLStart-Verzeichnis) mit
> deinen Farbdefinitionen erstellst.
Daran werde ich in den nächsten Tagen mal arbeiten.
Danke und Grüße
Matthias