Wie kann ich eine Farbe mit Visual Basic auslesen und einfügen?
Hallo zusammen,
ich habe in Excel eine Liste, mit einer Hintergrundfarbe die ich aus der Farbpalette selbst hinzugefügt habe. Nun habe ich in Visual Basic hinterlegt das je nachdem was an Werten ausgespukt wird einzellne Zellen rot gefärbt werden. Cells(zd, 6).Interior.Color = vbRed Wenn man die UserForm noch mal ausführt und die Werte ok sind, soll die Farbe wieder auf die vorherige Farbe geändert werden. Da diese aber keine standart Farbe ist, weiß ich nicht wie ich diese dort wieder rein bekomme..
3 Antworten
Ich habe mal drei Makros geschieben. Vielleicht hilft Dir das. Die Farbt habe ich Global deklariert, so dass er in allen Tabellen der Mappe verwendet werden kann. Color (Cl1) ist als Long deklariert.
Im erstenMakro wird die Farbe Cl1 festgelegt (hier die der ausgewählten Zelle).
Im zweiten wird die Zellenfarbe auf Cl1 gesetzt.
Im letzten Makro wird die Zelle komplett zurückgesetzt, also auf den Standardwert.
Global Cl1 As Long
Sub GetColor()
' Tastenkombination: Strg+g'
Cl1 = Selection.Interior.Color
End Sub
Sub SetColor()
' Tastenkombination: Strg+s
Selection.Interior.Color = Cl1
End Sub
Sub ColorClear()
' Tastenkombination: Strg+c'
With Selection.Interior
.Pattern = xlNone
.TintAndShade = 0
.PatternTintAndShade = 0
End With
End Sub
Am einfachsten nimmst du eine Musterzelle (Zeile z0, Spalte s0), die die gewünschte Farbe hat und deren Farbe sich nicht ändert:
Cells(zd, 6).Interior.Color = Cells(z0, s0).Interior.Color
Wenn das nicht geht, liest du diese Farbe einmal aus und setzt sie anstelle von vbRed ein
Auslesen:
MsgBox "&H" & Hex$(Cells(zd, 6).Interior.Color) & "&"
oder
MsgBox Cells(zd, 6).Interior.Color
(das Auslesen ist nur ein einziges Mal nötig, danach kannst du die betreffende Zeile wieder löschen)
(Oder du gibst gleich in das Direktfenster ein:
? "&H" & Hex$(Cells(zd, 6).Interior.Color) & "&"
'bzw.
? Cells(zd, 6).Interior.Color
)
Einfügen:
(die xxxxxxxx sind die "Hexadezimalziffern" (0-9, A-F), die du oben erhalten hast):
Const Standardfarbe As Long = &Hxxxxxxxx&
oder (das n ist die Zahl, die du oben erhalten hast):
Const Standardfarbe As Long = n
(Konstanten müssen ziemlich am Anfang der Codedatei definiert werden)
und an der betreffenden Codestelle:
Cells(zd, 6).Interior.Color = Standardfarbe
Also auslesen kannst du die Farbe wie folgt:
Gehe in deinem Arbeitsblatt mit ALT+F11 in den VBA Code deiner Tabelle und lege dann ein Modul an. Dort legst du folgenden Code ab:
Function HF(r As Range) As Integer
HF = r.Interior.ColorIndex
End Function
dann kannst du mit folgender Formel in irgendeiner Zelle dir die Hintergrundfarbe einer beliebigen Zelle ausgeben lassen, hier z.b. die Farbe von A1:
=HF(A1)
Hast du das denn auch in ein Modul gelegt? Wenn es nur in der Tabelle liegt tut sich nichts.
color index liest nur die fest vorgegebenen Farben
Nur .color ist da mächtiger. und lies dich mal in RGB ein (Rot Grün Blau - Werte, so wie sie im Weitere-Farben-Dialog wiedergegeben werden)
kanns grad nicht ausführlicher machen, muss weg.
Da tust sich gar nichts bei mir..