Hallo zusammen,
ich habe da mal wieder ein Problem, möchte gerne, wenn A1 >0 die RGB-Farbwerte aus B1 zur Färbung von C1 führt. Also, A1 steht die Zahl 5, in B1 steht 32,40,108 dann soll C1 in Royalblau gefärbt sein. Kann man so etwas über VBA generieren? Mit dem Makro-Rekorder kann ich keinen Bezug auf eine Zelle herstellen, habe ich schon probiert, im WWW habe ich auch nichts gefunden, ich bin der Einzige, der so etwas braucht.
Vielleicht gibt es ja eine Möglichkeit.
moin
eine Möglichkeit
Code:
Sub machs_bunt()
Dim strText As String
Dim Einz() As String
strText = Range("B1").Value
Einz = Split(strText, ",")
Range("C1").Interior.Color = RGB(Einz(0), Einz(1), Einz(2))
End Sub
mfg Tom
Hallo,
da reicht ein Einzeiler:
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
If Cells(1, 1).Value > 0 Then Cells(1, 3).Interior.Color = Cells(1, 2).Interior.Color
End Sub
Natürlich könnte man das noch so festlegen, dass über eine Intersect-Anweisung nur auf Eingaben in bestimmten Bereichen reagiert wird.
Moin!
Das hast Du falsch verstanden, Klaus-Dieter!
In B1 steht
der Text 32,40,108
C1 soll sich jetzt RGB(32, 40, 108) färben, wenn A1 nicht leer ist.
@Karl-Heinz 16:
Royalblau ist royalblue ist Königsblau.
Königsblau ist Schalke.
(schreibt ein derzeit geplagter Fan des S04)
Aber ich schweife ab!
Gruß Ralf
Übrigens:
Mir ist bewusst, dass der TE Excel 2019 hat.
Ab Excel 2021/365/Online kann man sich den Farbwert auch direkt mit einer Formel aus dem Text errechnen.
Dies könnte man als Zuweisung an Zelle.Interior.Color nutzen.
Zelle | Formel |
B1 | =SUMME(TEXTTEILEN(A1;;",")*256^SEQUENZ(3;;0)) |
Hallo Ralf,
Zitat:Das hast Du falsch verstanden, Klaus-Dieter!
stimmt, da hatte ich nicht weit genug gelesen. Wer macht denn auch solche Sachen? Mit RGB habe ich gefühlt schon seit Jahrzehnten nichts mehr gearbeitet.
Hallo RPP63, Klaus-Dieter und Crazy Tom,
Vielen Dank für eure Hilfe, ihr seid die Größten. Bei mir funktioniert der Code von Crazy Tom wunderbar. Bei dem Code von Klaus-Dieter passiert gar nichts, aber das wurde ja, dank RPP63, schon festgestellt.
@RPP63 Wenn ich natürlich Excel 2021 hätte, wäre wahrscheinlich noch mehr einfacher, habe ich aber leider nicht.
Dann solltest Du Dich vom kommagetrennten Text trennen und separate Spalten für R, G und B nehmen.
Den Farbwert nimmst Du dann aus D2
| A | B | C | D |
1 | R | G | B | Farbwert |
2 | 32 | 40 | 108 | 7088160 |
Zelle | Formel |
D2 | =A2+B2*256+C2*256^2 |
Dann brauchst Du auch kein allgemeines Makro, sondern kannst einfach ein Ereignismakro automatisch starten lassen:
Private Sub Worksheet_Change(ByVal Target As Range)
With Target
If .Column < 4 Then
Cells(.Row, 5).Interior.Color = Cells(.Row, 4)
End If
End With
End Sub
| A | B | C | D | E |
1 | R | G | B | Farbwert | |
2 | 32 | 40 | 108 | 7088160 | |
Zelle | Formel |
D2 | =A2+B2*256+C2*256^2 |
Was ist da jetzt besser als die Variante von Tom(die man ja genauso auf Change umstellen könnte), Ralf?
Gruß, Uwe
Nix ist "besser", Uwe.
Sinnvoller ist es aber allemal, R, B und G in einzelne Zellen zu schreiben.
Ob man dann den Farbwert mittels VBA-Funktion RGB() oder mittels einfacher Rechnung ermittelt, ist einerlei.
Ich persönlich fand es interessant, RGB() mittels aktueller Excel-Funktionen nachzubilden.
Gruß Ralf
(04.02.2024, 14:40)RPP63 schrieb: [ -> ]Ich persönlich fand es interessant, RGB() mittels aktueller Excel-Funktionen nachzubilden.
Welche wäre das in Deinem Beispiel, Ralf?
Gruß, Uwe