Discussion:
RGB Farben errechnen und Zellen färben
(zu alt für eine Antwort)
Daniel Lowicki
2004-02-26 10:24:38 UTC
Permalink
Hallo,

angenommen ich würde RGB Farben errechnen und
R in A1, G in B1 und B in C1 stehen haben.

Könnte ich automatisieren, das sich ein Feld, z.B. D1
in dieser Farbe färbt?

Gruesse,
Daniel
Dimo Tabken
2004-02-26 10:31:31 UTC
Permalink
Daniel Lowicki schrieb am 26.02.2004 um 11:24:38 Uhr:

Hi Daniel,
Post by Daniel Lowicki
angenommen ich würde RGB Farben errechnen und
R in A1, G in B1 und B in C1 stehen haben.
Setz' die Markierung in A1
Post by Daniel Lowicki
Könnte ich automatisieren, das sich ein Feld, z.B. D1
in dieser Farbe färbt?
Folgender Makro färbt D1 entsprechend der Zahlenwerte in A1:C1 :

Sub faerben()
Dim r As Integer
Dim g As Integer
Dim b As Integer

r = ActiveCell.Offset(0, 0)
g = ActiveCell.Offset(0, 1)
b = ActiveCell.Offset(0, 2)

ActiveCell.Offset(0, 3).Interior.Color = RGB(r, g, b)


End Sub
--
Gruß
Dimo
Mails an o.g. Adresse werden ungelesen gelöscht. Bei Bedarf, mir eine PM zu
schicken, bitte an dimo[punkt]tabken[ätt]indisol[punkt]de
Thomas Ramel
2004-02-26 10:46:02 UTC
Permalink
Grüezi Daniel
Post by Daniel Lowicki
angenommen ich würde RGB Farben errechnen und
R in A1, G in B1 und B in C1 stehen haben.
Könnte ich automatisieren, das sich ein Feld, z.B. D1
in dieser Farbe färbt?
Hier eine kleine Erignis-Prozedur, die das Gewünschte für die Spalten A:C
vornimmt. Bei jeder Veränderung in den Spalten wird die Farbe in Spalte D
angepasst.
Bedenke aber, dass maximal 52 Farben in Excel dargestellt werden können -
nicht ganz passende werden umgerechnet.

Private Sub Worksheet_Change(ByVal Target As Range)
'Hier den Bereich anpassen
Set Target = Application.Intersect(Target, Range("A:A,C:C"))
If Target Is Nothing Then Exit Sub

On Error GoTo ErrorHandler
Application.EnableEvents = False
Dim rngZelle As Range
For Each rngZelle In Target

Cells(Target.Row, 4).Interior.Color = RGB(Cells(Target.Row, 1), _
Cells(Target.Row, 2), Cells(Target.Row, 3))

Next rngZelle
ErrorHandler:
Application.EnableEvents = True 'Ereignisse wieder einschalten
End Sub
--
Mit freundlichen Grüssen

Thomas Ramel
- MVP für Microsoft-Excel -

[Win 2000Pro SP-4 / xl2000 SP-3]
Daniel Lowicki
2004-02-26 11:16:14 UTC
Permalink
Hallo Dimo, Hallo Thomas,

Das Makro funktionert aber leider muss man es immer erneut ausführen wenn sich zahlen ändern.

Das mit dem Ereignis hab ich noch nicht ganz herausbekommen - wie es geht.
Ich bin beim Blatt auf code anzeigen gegangen und habs dort einfach reinkopiert.
Bereich hab ich auf Range("A:1,C:1")) geändert. Ich bekomme einen Fehler damit.

Ich habe immer mal mit sehr vielen Zahlen zu tun, die Farbwerte sind.

Es wäre schön, wenn es hier was gäbe, was einfach so wie Formeln "runterziehbar wäre"
und somit schnell zu erweiteren - ich vermute aber das geht nicht.

Zur Farbbegrenzung. Ich hatte gehofft, dass man über Wert sRGB in 8-Bit adressieren kann.
Gibt es wirklich keine möglichkeit, die Farbarmut von Excel zu umgehen ?

Dankeschön und Gruss,
Daniel
Thomas Ramel
2004-02-26 11:57:01 UTC
Permalink
Grüezi Daniel
Post by Daniel Lowicki
Hallo Dimo, Hallo Thomas,
Das mit dem Ereignis hab ich noch nicht ganz herausbekommen - wie es geht.
Ich bin beim Blatt auf code anzeigen gegangen und habs dort einfach reinkopiert.
Bereich hab ich auf Range("A:1,C:1")) geändert. Ich bekomme einen Fehler damit.
Lass den Bereich einfach stehen, oder passe ihn dann wie folgt an:

Range("A1:C1")
Post by Daniel Lowicki
Ich habe immer mal mit sehr vielen Zahlen zu tun, die Farbwerte sind.
Sind die immer in den Zellen A1:C1 untergebracht?
Post by Daniel Lowicki
Es wäre schön, wenn es hier was gäbe, was einfach so wie Formeln "runterziehbar wäre"
und somit schnell zu erweiteren - ich vermute aber das geht nicht.
Bei nicht verändertem Berich im ereignis gilt die Sub für die gesamten
Spalten - egal in welcher Zeile. Ich denke, dies entspricht dem von dir
gewünschten Verhalten.
Post by Daniel Lowicki
Zur Farbbegrenzung. Ich hatte gehofft, dass man über Wert sRGB in 8-Bit adressieren kann.
Gibt es wirklich keine möglichkeit, die Farbarmut von Excel zu umgehen ?
Nein, die gibt es nicht (Oder doch; ich hatte 4 Farben unterschlagen:
Gleichzeitig dargestellt werden 56 Farben).

Schau dir auch die folgenden Informationen an:

http://www.xl-faq.de/xl-faq/xl-faqs01.htm#xlaaa
--
Mit freundlichen Grüssen

Thomas Ramel
- MVP für Microsoft-Excel -

[Win 2000Pro SP-4 / xl2000 SP-3]
Daniel Lowicki
2004-02-26 12:18:52 UTC
Permalink
Jetzt funktionerts - danke :-)

Darf der Range auch ("A1:C33") heißen ? Dann könnte ich
es einfach steuern.

Und .. könne ich andere Felder darauf referenzieren, damit
diese auch die Eigenschaften anehmen ?

Hintergrund: Ich messe einen Messstreifen (Medienkeil) aus
und werde diesen per Excel aus. Unter dem dazugehörigen
Graphen würde ich gerne die Farben auftauchen lassen
(Entlang der X-Achse, damit man den Wert visuell zuordnen kann),
damit man gleich sieht um welchen Farbton es sich handelt.
Das geht aber vermutlich nicht - zumindest nicht ohne riesigen
Aufwand.

So wie es ist ist es schonmal sehr schön - kann so auf jeden Fall
schon von mir eingesetzt werden.

Danke und Gruss,
Daniel
Post by Thomas Ramel
Range("A1:C1")
Thomas Ramel
2004-02-26 19:38:26 UTC
Permalink
Grüezi Daniel
Post by Daniel Lowicki
Jetzt funktionerts - danke :-)
Darf der Range auch ("A1:C33") heißen ? Dann könnte ich
es einfach steuern.
Solange es die drei ersten Spalten umfasst klappt auch das obige.
Post by Daniel Lowicki
Und .. könne ich andere Felder darauf referenzieren, damit
diese auch die Eigenschaften anehmen ?
Hmmm, wie meinst Du das?
Du möchtest in andren Spalten ebenfalls die Werte eingeben können, sodass
die 4 dann die Farbe übernimmt?

Erläutere noch etwas genauer, was Du damit meinst oder erreichen willst.

Im Moment werden die jeweiligen RGB-WErte aus den ersten drei Spalten
bezogen. Für weitere Zellen müsste man das Ganze noch etwas umarbeiten.
Post by Daniel Lowicki
So wie es ist ist es schonmal sehr schön - kann so auf jeden Fall
schon von mir eingesetzt werden.
Fein, es freut mich, wenn ich zu einem ersten Schritt beitragen konnte.
--
Mit freundlichen Grüssen

Thomas Ramel
- MVP für Microsoft-Excel -

[Win 2000Pro SP-4 / xl2000 SP-3]
Daniel Lowicki
2004-02-28 13:17:41 UTC
Permalink
Hallo Thomas,

ich wollte nun den Code gerne mal in eine Tabelle einsetzen, damit
Sie ein wenig lebt. Ich glaube ich hatte Dich falsch verstanden - der
Code ist wohl nur für Spalte 1-4 oder ?

Ich hatte gehofft, dass man den Bereich überall hinsetzen
kann - entweder die ganzen spalten oder nur einen rechteckigen
bereich so wie a1 bis c33.
Nun stehen meine RGBs gerade in AC bis AE und das Feld AF
soll eingefärbt werden.
Ist es Dir ohne großen Aufwand möglich, den Code zu ändern,
dass es so klappt, wie ich es brauche ? Ich stelle mir
grad vor, dass es für Dich nur ein Handgriff ist.

Oder ?

Private Sub Worksheet_Change(ByVal Target As Range)
'Hier den Bereich anpassen
Set Target = Application.Intersect(Target, Range("AC:AC,AE:AE"))
If Target Is Nothing Then Exit Sub

On Error GoTo ErrorHandler
Application.EnableEvents = False
Dim rngZelle As Range
For Each rngZelle In Target

Cells(Target.Row, 4).Interior.Color = RGB(Cells(Target.Row, 1), _
Cells(Target.Row, 2), Cells(Target.Row, 3))

Next rngZelle
ErrorHandler:
Application.EnableEvents = True 'Ereignisse wieder einschalten
End Sub


Gruesse,
Daniel
Daniel Lowicki
2004-02-28 13:23:30 UTC
Permalink
Am einfachsten wärs eigentlich, wenn ich den SpaltenbereichBereich für
direkt definieren könnten.

z.B.
R .. B2-B30
G .. C2-C30
B .. D2-D30
Ziel ... G2-G30 oder auch A2-A30

Lässt sich das womöglich ohne großen Aufwand realiseren ?


Gruesse,
Daniel
Daniel Lowicki
2004-03-02 08:41:02 UTC
Permalink
Danke - hat sich alles erledigt.

-Daniel
Post by Daniel Lowicki
Am einfachsten wärs eigentlich, wenn ich den SpaltenbereichBereich für
direkt definieren könnten.
z.B.
R .. B2-B30
G .. C2-C30
B .. D2-D30
Ziel ... G2-G30 oder auch A2-A30
Lässt sich das womöglich ohne großen Aufwand realiseren ?
Gruesse,
Daniel
Loading...