Live-Forum - Die aktuellen Beiträge
Datum
Titel
17.04.2024 18:57:33
17.04.2024 16:56:58
Anzeige
Archiv - Navigation
1380to1384
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

VBA Color berechnen aber wie

VBA Color berechnen aber wie
12.09.2014 23:51:46
Ivonne
Hi,
habe ein Problem wo ich trotz Recherche nicht weiterkomme
Eine Zelle kann man Interior.Color und Interior. TintandShade färben.
Frage ich die Zelle mit .Color dann ab bekomme ich die Colornummer in der Color und Tintandshade enthalten sind.
Wie kann ich jetzt in VBA die Colornummer aus Color und Tintandshade berechnen ohne das ich eine Zelle als Hilfsmittel nehme.
gruss Ivonne

29
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA Color berechnen aber wie
13.09.2014 01:24:42
Daniel
Hi
.Color ist der RGB-Wert einer Farbe (Rot-, Grün-, Blauanteil in einer Abstufung von 0-255)
jede Farbe hat einen bestimmten RGB-Wert.
Schwarz: 0, 0, 0
Weiss: 255, 255, 255
Rot: 255, 0, 0
Grau: 100, 100, 100
Lila: 162, 100, 128
wenn du jetzt das TintAndShade anwendest, dann ist es so dass beim Wert 0 die volle Farbe angwendet wird (also bei Lila bspw 162,100,128) und je näher du das TintAndShade an 1 annäherst, um so heller wird die Farbe, bei 1 ist alles weiss und hat damit den RGB-Wert 255,255,255
bei den Zwischenwerten wird prozentual angenähert.
beispiel für Lila
TaS 0,0: 162, 100, 128
TaS 0,5: 208, 176, 191
TaS 1,0: 255, 255, 255
wenn du die Basis-RGB-Werte für eine Farbe bei TaS 0 kennst, dann kannst du die RGB-Werte für jedes Zwischen-TaS so ausrechnen:
Neuer Farbwert = Basiswert + TaS * (255 - Basiswert)
gruß Daniel

Anzeige
Und was ist mit den Negativ-T&S-Werten? owT
13.09.2014 03:51:41
Luc:-?
:-?

AW: Und was ist mit den Negativ-T&S-Werten? owT
13.09.2014 11:40:46
Ewald
Hallo,
So ganz richtig ist das nicht.
TintAndShade(TAS)geht von -1 bis 1
-1 Schwarz
0 die Grundfarbe
1 Weiss
bei positiven Wert wird also mit Weiss gemischt
bei negativen Wert wird mit Schwarz gemischt
außerdem ist es so das bei nur einem RGB-wert (255,0,0) bei positvem TAS die Nullwerte erhöht werden
bei negativem Wert wird dann der RGB-wert(255) kleiner
Die Formel von Daniel passt also nicht ganz.
Es ist auch nicht gerade optimal wenn man nur den Colorwert hat, erst nach RGB umzurechnen, dann berechnen und dann wieder nch Color umzurechnen.
Eine Function die dies automatisch macht,wäre hier sinnvoll
Gruß Ewald

Anzeige
Genau, Ewald, ...
13.09.2014 11:55:16
Luc:-?
…zumal ihn ja unsere Diskussion(en) nach eigenem Bekunden gar nicht interessiert haben! ;-]
Ähnliches läuft bei BedFormat Skala und da sahen meine Formeln wie die für komplexe statistische Indizes aus.
Gruß, Luc :-?

AW: Vorschau geht nicht...
14.09.2014 00:45:13
Ewald
Hallo Luc,
... Beitrag immer weg, hoffe das es klappt.
Hier eine Funktion die in beide Richtungen geht
Function Col(Color As Long, Tas As Double) As Long
Dim R
Dim R1
Dim G
Dim G1
Dim B
Dim B1
R = Color Mod 256
G = (Color \ 256) Mod 256
B = (Color \ 256 \ 256) Mod 256
If Tas > 0 Then
R1 = R + WorksheetFunction.RoundUp(Tas * (255 - R), 0)
G1 = G + WorksheetFunction.RoundUp(Tas * (255 - G), 0)
B1 = B + WorksheetFunction.RoundUp(Tas * (255 - B), 0)
Else
R1 = R + WorksheetFunction.RoundDown(Tas * R, 0)
G1 = G + WorksheetFunction.RoundDown(Tas * G, 0)
B1 = B + WorksheetFunction.RoundDown(Tas * B, 0)
End If
If R1 
Gruß Ewald

Anzeige
AW: Vorschau geht nicht...
14.09.2014 17:46:04
Ivonne
Hi,
wenn ich das richtig verstehe, bekomme ich mit dieser Funktion die Farbe die aus der Farbnummer und TAS besteht. Soweit schon mal sehr gut.
Wie bekomme ich aber in VBA aus einer Farbnummer die Farbnummer der Grundfarbe und Tas.
gruss Ivonne

AW: Es geht nicht
14.09.2014 18:03:02
Daniel
Hi
Was du vor hast funktioniert nicht.
Farbnummer der Grundfarbe, TAS und Farbnummer der angezeigten Farbe verhalten sich wie eine einfache mathematische Formel x*y=z.
Wenn von drei Werten zwei gegeben sind, kannst du den dritten berechnen.
Ist jedoch nur ein Wert bekannt, kannst du die beiden anderen nicht ermitteln.
Auf einen anderen Bereich übertragen lautet deine Fragestellung im Prinzip:
"Der Reduzierte Preis eines Gegenstandes beträgt 35 €. Um wie viel Prozent wurden der Preis reduziert und wie hoch war der ursprüngliche Preis?"
(der reduzierte Preis entspricht der angezeigten Farbe, das TAS dem Prozentwert und der Ursprüngliche Preis dem Farbwert der Grundfarbe)
Gruß Daniel

Anzeige
Wenn das für alle Farben aller Themes ...
14.09.2014 20:37:48
Luc:-?
…sein soll, Ivonne,
müsstest du den jeweiligen Farbwert in einem geordneten Verzeichnis aller Farbwerte aller Themes suchen. Wird er gefunden, kann, bezogen auf das jeweilige Theme, der Index der jeweiligen AkzenteGruppe (1…10) und je nach Position des Ausgangsfarbwerts innerhalb der Gruppe der TintAndShade-Wert abgeleitet wdn. Anderenfalls handelt es sich um einen ExtraFarbwert des Themes, zu dem es keinen T&S-Wert gibt. Diese Lösung ist also nur tabellarisch möglich, da es sich quasi um eine Erweiterung des FarbIndexTabellen-Modells handelt.
Da aber die Möglichkeit besteht, eigene Themes anzulegen, dürfte es wohl kaum jemals eine vollständige Lösung auf dieser Basis geben, denn die Anzahl der so angelegten speziellen IndexTabellen könnte der Anzahl der möglichen Farben theoretisch nahekommen bzw sie sogar überschreiten. Auch deshalb halte ich dieses Vorgehen für wenig sinnvoll. Anders sieht es aus, wenn man das für eine gegebene Farbe des aktuell eingestellten Themes macht. Da wäre so etwas (ähnlich wie ein verbindlich definierter FarbName bzw eine RAL-Nr) ein ZusatzAngebot der FarbBeschreibung.
Gruß, Luc :-?

Anzeige
AW: Wenn das für alle Farben aller Themes ...
14.09.2014 23:13:15
Ewald
Hallo,
grundsätzlich ist bei normaler Zellfärbung TAS = 0, was bedeutet die Zellfarbe ist wenn man so will die Grundfarbe, egal ob es sich um eine mit TAS geänderte Grundfarbe handelt.
Erst wenn man eine Zelle mit Color und TAS färbt, kann man auch TAS auslesen.
Es bleibt also nur die oben erwähnte Möglichkeit einen Farbwert per TAS zu verändern und dann den neuen Farbwert zu bekommen. Wird jetzt eine Zelle mit diesem Wert gefärbt, ist das aber wieder nur Farbe,an die Zelle wird keine TAS-Info weitergegeben.
Auch das Auslesen aller Farben aller Colorthemen hilft hier nicht unbedingt weiter. Da ja in den Themen nur bestimmte TAS-Werte gespeichert sind.
Werden die Grundfarben aller Themen ausgelesen und läßt man dann TAS in 0,01 Schritten drüberlaufen(ergibt 200 Zeilen für eine Farbe),besteht trotz fast 101000 Farbwerten die Wahrscheinlichkeit, das der Farbwert nicht gefunden wird.
Auch besteht ja auch die Möglichkeit,das eine gemischte Farbe noch einmal gemischt wird.
Ist also nicht oder nur in engen Grenzen machbar.
Gruß Ewald

Anzeige
AW: Wenn das für alle Farben aller Themes ...
15.09.2014 11:01:01
Ivonne
Hi,
danke für die Antworten,dann ist dieses Thema gegessen.
Nur die Frage aus dem anderen Beitrag ist noch offen und wieder verschwunden.
Eigentlich bin ich ja mit der Hilfe hier sehr zufrieden, nur dieser Unsinn mit dem Löschen ist doch nervig. Gibt es da keine andere Lösung.
Ewald kannst du nochmal das mit der Userform hier erläutern.
gruss Ivonne

das hat dir Luc doch erklärt
15.09.2014 11:20:06
Rudi
Hallo,
Beiträge werden nach einigen Tagen automatisch ins Archiv verschoben. Das ist auch nicht änderbar.
Stelle die Frage neu und verlinke möglichst auf den Archivbeitrag.
Gruß
Rudi

Anzeige
Danke, Rudi, und hier wäre schon mal ...
15.09.2014 13:39:32
Luc:-?
…der ArchivLink zum dortigen letzten BT von Ewald!
PS@Ewald: Deshalb traue ich auch den Zurück-Buttons des Forums nicht und nehme lieber den allgemeinen des Browsers… ;-]
Gruß, Luc :-?

Richtig, Ewald, ...
15.09.2014 13:25:07
Luc:-?
…und außerdem kommt hinzu, dass sich der T&S-Faktor nicht auf die RGB-Werte, sondern auf das HSL-System bezieht (was ich anfänglich vermutet, aber nicht den Einstieg gefunden hatte, weshalb ich das nicht erwähnte), speziell die Farbintensität, die exakt dem von dir genannten Schema folgt → die Intensität der GruppenGrundfarbe ist der teilende Wert der Skala von 0…255. Folglich beziehen sich negative T&S-Werte direkt auf diesen Grundwert, während positive auf seine Differenz zu 255 abstellen. Der Farbton bleibt dabei gleich und die Farbsättigung schwankt leicht, was letztlich alles den Gedanken nahelegt (bzw zu bestätigen scheint), dass hier tatsächlich mit diversen FarbIndex-Tabellen festgelegter RGB-Werte gearbeitet wird.
Gruß, Luc :-?

Anzeige
Dazu vgl folgenden Wikipedia-...
15.09.2014 15:33:14
Luc:-?
Link!
Luc :-?

AW: Dazu vgl folgenden Wikipedia-...
15.09.2014 19:46:23
Ewald
Hallo Luc,
danke für den Tip, doch das war die Ursache, hatte den neuen Firefox runtergeladen und mir Malware eingefangen(Startseite mit Werbeabbs). diese verhinderte das Speichern im Cache und damit war der Text dann weg.
zurück zum Thema:
Deine Ausssage stimmt nicht, auch wenn man es auf den ersten Blick meint.
die Farbsysteme habe ich ja in Farben.xlsm erklärt und darum hier nur kurz.
das HSL-System ist aufgebaut wie ein Doppelkegel, unten schwarz oben weiß, die 6 anderen Farben in der Mitte jeweils 60 Grad verschoben. Die Croma wird also von innen nach außen größer.
Will man dies auf das RGB-System übertragen, so muß man sich einen Würfel vorstellen, auf dessen acht Ecken alle Farben sitzen. Hier ändert sich wenn man so sagen will die Croma von Kante zur Kante. Also genau anders herum.
TAS beeinflusst aber nicht die Croma sondern nur die Mischung der RGB-Werte mit schwarz und Weiss.
Gruß Ewald

Anzeige
Mir ist es inzwischen aber gelungen, ...
15.09.2014 21:30:10
Luc:-?
…Ewald,
auf der Basis der Wikipedia-Fmln HSV- und HSL-Werte aus RGB-Werten zu berechnen. Leider wird der umgekehrte Weg nur für HSV-Werte angegeben, wobei mir nicht ganz klar ist, ob ich dabei das gleiche Verfahren (für S bzw V) anwenden kann wie bei L. L lässt sich jedenfalls mit T&S entsprechend manipulieren, so dass sich die richtigen Werte ergeben. Nur für S habe ich noch keinen Weg gefunden, so dass anzunehmen ist, dass das Verfahren noch wesentlich komplexer ist.
Aus den RGB-Werten lässt sich (zumindest mit negativem T&S-Faktor) mE kein sinnvolles Ergebnis ermitteln.
Gruß, Luc :-?

AW: Mir ist es inzwischen aber gelungen, ...
15.09.2014 22:26:28
Ewald
Hallo Luc,
eigentlich sprengt das ja hier den Rahmen, da es ja nur um TAS ging.
hier mal ein Auszug
RGB - Farben
Jede Farbe besteht aus den Farbkanälen Rot ( R ), Grün ( G ), Blau ( B ), daraus resultiert dann auch der Name RGB - Farben
Jede dieser Farbkanäle kann einen Wert von 0 - 255 einnehmen, 0 bedeutet keine Farbanteile und dunkler, 255 volle Farbanteile und heller
Es läßt sich auch die Helligkeit (Luminanz) einer RGB - Farbe berechnen ( L = 0,3*R+0,59*G+0,11*B), jedoch nicht als Parameter verwenden
HSL - Farben
Bei HSL - Angaben muß man aufpassen, es gibt unterschiedliche Angaben einmal Farbraum (Standard) und Excel
Standard
Eine Farbe aus diesem Farbraum hat folgende Parameter hue Farbton (H), saturation Sättigung (S), lightness Helligkeit (L)
hue kann einen Wert von 0 - 360 annehmen (Winkel in einem Kreis)., wobei Rot (0,360),Grün (120), Blau (240) als Wert besitzen
saturation einen Wert von 0 .- 100 (in Prozent) 100 bedeutet kein Grauanteil in der Farbe und kräftig, 0 voller Grauanteil und blass
lightness bestimmt die Helligkeit der Farbe, wobei ebenfalls Werte zwischen 0 (Schwarz) und 100 (Weiß) möglich sind.(ebenfalls in Prozent)
Bei Berechnungen ist zu beachten das die RGB-Angaben in Prozent (0-100) und die Ausgabe von S und L in einem Bereich 0-1 ausgegeben werden
Einfacher ist die Farbnummer (RGBlong) zu benutzen und dann nur die Ausgabe von S und L mit 100 zu multiplizieren
Excel
Auch in Excel hat die Farbe die Parameter hue Farbton (H), saturation Sättigung (S), lightness Helligkeit (L)
Allerdings kann jeder Parameter den Wert 0 - 255 annehmen
Eine einfache Umrechnung mit Faktoren 255/360 = 0,70833 für Hue und 255/100 = 2,55 für Saturation/Lightness ist aus HSL nach ExcelHSL möglich
Wie du siehst ist eine Umrechnung eigentlich kein Problem, wenn man berücksichtigt das HSL und HSL-Excel unterschiedlich ist.
Außerdem zeigt dir Excel doch die Werte auch selber an.
markiere eine gefärbte Zelle/Zellen formatieren/Ausfüllen/weitere Farben/Benutzerdefiniert.
Unten werden dir jetzt die RGB-Werte angezeigt, wähle dann einfach HSL und schon hast du die HSL-Werte.
Wenn du deine Berechnung auf Standard-HSL gemacht hast, wirst du sehen das es Unterschiede gibt.
Gruß Ewald

AW: Mir ist es inzwischen aber gelungen, ...
15.09.2014 23:35:58
Daniel
HI
Excel arbeitet damit, aber kann man die HSL-Werte auch in VBA eingeben oder abfragen?
der Recorder zeichnet nur RGB auf, auch wenn ich HSL eingebe und auch in den Eigenschaften zu .Color steht nichts von HSL, sondern nur von RGB.
und das Problem bei RGB ist ja, dass je weiter ich eine Farbe abdunkle oder aufhelle, um so mehr verliere ich die Information über die ursprüngliche Farbe.
Aus einem RGB-Schwarz kann ich keine Farbinformation mehr zurückrechnen, aus einem HSL-Schwarz sehr wohl.
Gruß Daniel

AW: Mir ist es inzwischen aber gelungen, ...
16.09.2014 01:07:24
Ewald
Hallo Daniel,
vergesse einfach HSL als Farbeingabe zu benutzen.
es funtioniert nicht sauber, selbst wenn du in Excel die Werte eingibst.
Die Farbe gelb RGB(255,255,0) ergibt in Excel HSL(42,255,128)
gibst du jetzt HSL(42,255,128)ein wird daraus RGB(255,255,1) anstatt RGBlong 65535 wird 131071
Auch wird per Auswahl kein HSL eingetragen sondern nur RGBLong
Die VBA-Lösungen funktionieren in HSL-Standard aber nicht in Excel-HSL
was du mit Infos verlieren meinst, verstehe ich nicht ganz.
Gibst du Grundfarbe und TAS ein hast du alle Infos, wird nur RGBlong eingegeben(TAS = 0) kannst du natürlch auch keine Grundfarbe finden.
Gruß Ewald

AW: Mir ist es inzwischen aber gelungen, ...
16.09.2014 01:50:02
Ewald
Hallo Daniel,
Nachtrag:
laß mal auf einer leeren Tabelle dieses Makro laufen
Sub FarbenTheme()
Dim i
Dim k
Dim w
Dim v
For i = 1 To 12
Cells(2, i).Value = ThisWorkbook.Theme.ThemeColorScheme.Colors(i)
Next
For k = 1 To 12
v = 0.1
w = -0.1
For i = 1 To 10
Cells(i + 2, k).Interior.Color = Cells(2, k).Value
Cells(i + 2, k).Interior.TintAndShade = v
Cells(i + 2, k).Value = Cells(i + 2, k).Interior.Color
v = v + 0.1
Next
For i = 1 To 10
Cells(i + 12, k).Interior.Color = Cells(2, k).Value
Cells(i + 12, k).Interior.TintAndShade = w
Cells(i + 12, k).Value = Cells(i + 12, k).Interior.Color
w = w - 0.1
Next
Next
End Sub
Hier kannst du deutlich erkennen das ein Mischen mit Weiss(pos.TAS) bei Weiss oder Mischen mit Schwarz(neg.TAS)bei Schwarz nichts verändert.
Alle anderen Farben ändern sich.
Gruß Ewald

So, inzwischen habe ich mal ein Bsp ...
16.09.2014 03:02:12
Luc:-?
…zusammengestellt, Ewald,
aber auf die ebenso mögliche Ermittlung von HSV verzichtet, weil T&S wohl nicht darauf anzusetzen scheint.
Userbild
Gruß, Luc :-?

Und hier die Fortsetzung mit HSL in RGB ...
16.09.2014 11:42:00
Luc:-?
…nach Fmln aus der umfangreicheren Darstellung im englischen Wikipedia:
Userbild
Gruß, Luc :-?

AW: Und hier die Fortsetzung mit HSL in RGB ...
17.09.2014 00:28:52
Ewald
Hallo Luc,
das dies mathematisch zu berechnen ist uns sich in Excel darstellen läßt ist ja nicht das Problem.
Ob die Farbe jetzt durch HSL oder RGB definiert wurde, ist Excel zunächst egal, es macht daraus die Colornummer(RGBLong) und wendet dann darauf TAS an. Deshalb bekommst du auch das gleiche Ergebnis.
Wenn du dies aber in VBA machen willst gibt es Probleme. HSL arbeitet intern mit 0-240, Excel mit 0-255.
Natürlich kann man Umrechnungsfaktoren benutzen, doch haben Versuche gezeigt, kommt man über 240 oder in den negativen Bereich funktioniert eine Umrechnung nicht mehr. Jedenfalls kenne ich keine Function HSLtoRGB, oder RGBtoHSL die über den gesamten Bereich funktioniert.
Vielleicht gelingt es dir ja, dies hinzubekommen.
Ein weiterer Nachteil ist natürlich auch, das du HSL-werte in VBA nicht direkt eingeben kannst.
Nur wenn ich umrechnen muß,warum dann HSL verwenden.
Gruß Ewald

Fortsetzg d.Disk - AW zu E v.20140917:002852
17.09.2014 03:19:08
Luc:-?
Das ist eben eine falsche Vermutung, Ewald:
Zitat: Ob die Farbe jetzt durch HSL oder RGB definiert wurde, ist Excel zunächst egal, es macht daraus die Colornummer(RGBLong) und wendet dann darauf TAS an. Deshalb bekommst du auch das gleiche Ergebnis.
T&S kann weder auf den Farbwert (.Color ⇒ [B,G,R]×256^[2…0]) noch dessen RGB-EinzelKomponenten angewendet wdn, sondern bezieht sich offensichtlich auf die Lightness des HSL-Farbraums, was ich mit meinen Bspp belegt habe. Folglich erfolgt in Xl intern eine Umrechnung, um einerseits die HSL-Werte auf Basis einer EDV-üblichen 2stellig hexadezimalen Codierung (hier dezimal angezeigt) präsentieren und andererseits dann auf die jeweilige Grundfarbe die genormten T&S-Faktoren anwenden zu können. Dabei wdn offensichtlich die RGB- in HSL-Werte umgerechnet, denn sie lassen sich ja nicht per VBA abrufen. Wenn man also T&S auf die Grundfarben der AkzentGruppen anwenden wollte, könnte das nur so erfolgen. Anderenfalls müsste man die RGB- bzw Farbwerte für alle GruppenElemente auslesen, so aber nur die FarbIndizes (→RGB-Farbwerte) des Farbschemas mit der ZusatzInfo, ob sie zu diesen Grundfarben zählen (deshalb zeigt mein AusleseBsp mit UDF ThColor für die jeweilige GrundFarbe auch nur deren FarbIndex, weil T&S=0 → sollte aber wohl zur leichteren Identifikation noch die GruppenNrAnzeige einarbeiten!).
Habe dabei festgestellt, dass trotz der geringen Abweichungen im Endergebnis des 2.Bsps die HSL die Gleiche ist. Folglich kann bei der Rückrechnung die Saturations-Abweichung (von der Grundfarbe) der HSL vernachlässigt wdn, denn sie passt sich dann wohl automatisch an.
Zitat: Wenn du dies aber in VBA machen willst gibt es Probleme. HSL arbeitet intern mit 0-240, Excel mit 0-255.
Das kann ich nicht nachvollziehen, Ewald. Im allgemeinen HSL-Modell reicht Hue von 0-360°, S&L dagg sind %-Werte, also 0-1 bzw 0-100%. Das Gleiche gilt übrigens auch für das allgemeine RGB-Modell, nur sind hier alle 3 Werte %-Angaben. Um den hexadezimalen Zahlenraum maximal auszunutzen wird in beiden Fällen auf 00-FF umgerechnet, woraus sich dann die einstellbaren MiniMax-Werte 0-255 ergeben, also auch für H! Das habe ich in den Fmln (deren Vorlage man auf den verlinkten Wikipedia-Seiten findet) meiner Bspp berücksichtigt. Allerdings haben bestimmte HSL-Einstellungen keine separaten RGB-Pendants, es gibt also etliche S/W(/Grau)-HSL-Einstellungen. Daher wird wohl auch deine Ansicht herrühren, nur ist das deutlich farbabhängig (vbGreen=#00FF00 hat zB ein S von 255=100%!).
Du siehst also (an meinen Bspp), es ist mir schon gelungen… ;-)
Gruß, Luc :-?

AW: Fortsetzg d.Disk - AW zu E v.20140917:002852
17.09.2014 19:21:32
Ewald
Hallo Luc,
möchte jetzt hier nicht alles wiederholen, habe dazu in OL ausreichend geschrieben.
Du hast nicht berücksichtigt das wir uns in Excel befinden.
MS hat dafür eigene Farbraüme geschaffen,die zwar ähnlich, aber nicht gleich den Standardfarbräumen sind.
Willst du als Beispiel eine HexHTML-Farbangabe in Excel verwenden mußt du R und B tauschen.
ähnlich im HSL-System hier werden alle Werte im Bereich von 0 - 255 eingegeben.
Wie du hier sehen kannst
http://de.wikipedia.org/wiki/HSV-Farbraum#mediaviewer/File:HSV-RGB-comparison.svg
hat eine RGB- Farbe in HSL genau 240 Grad (60 Grad aufsteigende Flanke, 120 Grad linear, 60 Grad absteigende Flanke)
Jetzt könnte man meinen, einen Umrechnungsfaktor zu benutzen, doch dies funktioniert nicht.
siehe auch hier http://www.office-loesung.de/ftopic435875_0_0_asc.php
Grund ist das im HSL-Modell entlang der Schwarz - Weiss Linie (Grauzone) es einen undefinierten Farbton gibt.
Bei einer linearen Angabe von 0 - 255 ist das natürlich nicht hinnimmbar.
Versuche mit einem zusätzlichen Faktor (255/240 + x) haben aber gezeigt, das dieser Faktor sich auch ändert.
Ein Beispiel die Farbe Gelb (65535) RGB (255,255,0)
Im Standard-HSL ergibt sich (60,100%,50%)
Im Excel-HSL aber (42,255,128)
Das man RGB-Angaben sehr wohl mit TAS ämdern kann, habe ich ja schon weiter oben dargestellt.
Gruß Ewald

Mir scheint die Methode, mit T&S bei HSL anzu-...
17.09.2014 19:50:44
Luc:-?
…setzen, logischer, Ewald,
weil nur eine Angabe variiert wdn muss. Die Berechnung der RGB-Werte war anschld relativ problemlos möglich. Aus meinen Darstellungen kann man auch erkennen, dass ich weiß, dass die XlFarbwerte, egal ob dezimal oder hexadezimal, aus BGR berechnet wdn.
Ich gehe von der Doppel-Kegel-Form des HSL-Farbraums aus. Damit ergäben sich für H 360°. Dass es hier zu undefinierten Bereichen kommt, konnte ich natürlich auch der Literatur entnehmen. Allerdings scheint Xl die zu ignorieren. Ob es zu signifikanten Abweichungen beim HinundherRechnen der 6 (bzw 8) allgemeinen VollFarben kommt, müsste ich mal anhand der von mir der Literatur entnommenen und Xl-Bedingungen angepassten Fmln überprüfen — zumindest theoretisch gibt es wohl bei so ziemlich allen Modellen Umrechnungs­probleme. Für meine Bspp fktioniert's jedenfalls zufrieden­stellend.
Da du schreibst, du hättest T&S (direkt) auf RGB-Werte angewendet, muss ich mir deine Bspp noch mal genauer ansehen. Mir schien das jedenfalls (im Gegensatz zu BedFormat Skala) nicht so einfach möglich.
Die im INet zu findenden Pgmm habe ich nicht ausprobiert, da mir für die Demo die Fmln ausreichten.
Gruß, Luc :-?

Ja, prinzipiell geht das natürlich auch direkt ...
18.09.2014 16:32:14
Luc:-?
…mit RGB-Werten, Ewald,
aber das ist im RGB-Farbraum eben wesentlich komplizierter als im HSL-Farbraum. Genau deshalb wurden ja auch die anderen Farbräume geschaffen (wobei HSL und HSV wg ihrer RGB-Nähe in der Kritik stehen) — einfache Skalierbarkeit ohne die genauen RGB-Anteile kennen zu müssen.
Da es letztlich bei T&S um die Skalierung der Lightness geht, kann man die vorhandenen Fmln so umrechnen, dass ein (komplexer) Algorithmus zur Variation der RGB-Komponenten herauskommt. Den habe ich noch nicht, obwohl ich so etwas in Teilen (bei BedFormat-Skala-Auswertung) schon angewendet hatte. Wahrscheinlich meinst du ja so etwas und hast das auch schon angewendet, woraufhin ich mir deine Pgmm noch nicht angesehen habe.
Gruß, Luc :-?
Besser informiert mit …

AW: Ja, prinzipiell geht das natürlich auch direkt ...
19.09.2014 00:39:27
Ewald
Hallo Luc,
was soll dann daran kompliziert sein.
Dieses einfache Makro zeigt dir die 12 Grundfarben der Aktiven Colortheme und die Auswirkung von TAS von 0 - 1 und 0 - -1, jeweils in 0,1 Schritten.
Sub FarbenTheme()
Dim i
Dim k
Dim w
Dim v
For i = 1 To 12
Cells(2, i).value = ThisWorkbook.Theme.ThemeColorScheme.Colors(i)
Next
For k = 1 To 12
v = 0.1
w = -0.1
For i = 1 To 10
Cells(i + 2, k).Interior.Color = Cells(2, k).value
Cells(i + 2, k).Interior.TintAndShade = v
Cells(i + 2, k).value = Cells(i + 2, k).Interior.Color
v = v + 0.1
Next
For i = 1 To 10
Cells(i + 12, k).Interior.Color = Cells(2, k).value
Cells(i + 12, k).Interior.TintAndShade = w
Cells(i + 12, k).value = Cells(i + 12, k).Interior.Color
w = w - 0.1
Next
Next
End Sub
willst du die Farbangaben in RGB haben, so stellt das auch kein Problem dar.
Für mich ist HSL in Excel auch keine Alternative,
Auswahl nur im Farbdialog
in VBA nicht zu verwenden
keine direkte Umwandlung von Standard-HSL nach Excel-HSL
unbestimmter Farbbereich um die Grauzone.
das sind alles Punkte die nicht gerade für eine Verwendung sprechen.
Auch ist es nicht richtig, das die Standard-Farbräume nach den von MS definierten Farbräumen kamen.
Es ist genau umgekehrt, MS hat die Standard-Farbräume angepaßt um alle Angaben linear im Bereich zwischen 0 - 255 eingeben zu können.
Das einzige was in Bezug zu HSL noch offen ist, wäre die direkte Umwandlung von RGB nach Excel-HSL.
Bisher ist mir keine Lösung bekannt.
Gruß Ewald

Ja, das ist wirklich nicht kompliziert, ...
19.09.2014 05:12:19
Luc:-?
…Ewald,
allerdings erzeugst du ja auch „nur“ Farben aus einer Grundfarbe in 10%-T&S-Schritten. So sehen aber die T&S-Werte der mit den MS-Original-Menüs erzeugten Farben (zumindest unter Xl12/2007) nicht aus. Meine UDF ThColor liest nämlich genau diese aus und rundet sie für die Wiedergabe als Text auf runde %. Da die OriginalWerte ganz krumme Zahlen mit vielen Dezimalen sind, scheint mir das dann doch darauf hinzudeuten, dass hier intern komplexe (Farbraum­System-)Umrechnungen im Gange sind.
Übrigens enthalten die OriginalMenüs ja auch weniger Farben als deine SubProzedur erzeugt (die könnte sicher auch noch mehr erzeugen, hängt doch wohl nur von der T&S-Schrittweite ab!). Folgerichtig ist dann wohl auch, dass die erwähnte UDF (unter Xl12) keine der mit deinem (oder meinem Färbe-)Pgm erzeugten Farben als ThemeColor identifiziert und auch stets T&S=0 ist. Ich vermute hier eine ZusatzInfo, die durch ein anderes als das direkte Färben über das Original-Menü verloren geht (konnte ich feststellen) bzw gar nicht erst angelegt wird. (Evtl ist es aber auch nur der so kaum erreichbare Original-T&S-Faktor, der das auslöst.)
Die mit deinem Pgm erzeugten Farben entsprechen zwar weitest­gehend den Original­Farben, sind aber trotzdem nicht völlig mit ihnen identisch, auch bei gleichen Farb-, RGB- und sogar HSL-Werten. Das könnte aber auch „nur“ ein Xl12-Problem sein.
Allerdings ist in den Original-FarbMenüs (Xl12) ohnehin einiges durcheinander wie das Folgende zeigt:
Userbild
Das mag daran liegen, dass es neben dem msoThemeColorScheme- von 1-12 noch den msoThemeColor-Index von 1-16 gibt. Da kann auch ein MS-Pgmierer schon mal durch­einanderkommen… ;-]
Ansonsten habe ich ja auch nie behauptet, dass MS den RGB-Farbraum erfunden hätte. Sie haben ihn nur „hexadezimalisiert“. Aber, ob sie damit die Ersten waren… ;-)
Die HSL-RGB-UmrechnungsFmln stehen im von mir weiter oben verlinkten Artikel im engl Wikipedia. Auf dieser Basis habe ich die Fmln in meinem 2.Bsp entwickelt. Das ist natürlich noch nicht vollständig. Ich war aber auch eher an der komplexen Lösung für RGB interessiert, bei der man wie von dir gezeigt wohl auf die ganze Umrechnerei verzichten könnte, wenn Scheme-Index und T&S-Faktor bekannt sind. Dumm ist nur, dass es hier wie gezeigt (unter Xl12) zu Unstimmigkeiten kommt, die es teilweise komplizieren wdn. Ohne die korrekte Grundfarbe nutzt dann auch die ganze Umrechnerei nichts. Die müsste dann erst noch ermittelt wdn. Aber viell hat MS den Fehler ja mit Xl14/2010 beseitigt…
Gruß, Luc :-?

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige