Hintergrundfarbe kopieren in Excel

4 Antworten

Vom Beitragsersteller als hilfreich ausgezeichnet

Ich denke, dass geht nur händisch, also:
Zelle mit der zu kopierenden Farbe auswählen.
Auf Füllfarbe / Weitere Farben/ Benutzerdefiniert gehen,
und DA die RBG-Werte abschreiben (oder auswendig merken (:o)).
Dann die andere Zelle auswählen und dort die RGB-Werte eingeben.
Aber wahrscheinlich ist es da schneller, alle Formate mit Inhalte einfügen... zu kopieren und den Rest wieder zurückzustellen.

Oder willst Du das über VBA machen?
Dann z.B. so:

ActiveCell.Interior.Color = Range("A1").Interior.Color

Du kannst auch den Color-Wert in eine Variable auslesen und dann später verwenden:

lngTolleFarbe = ActiveCell.Interior.Color

Oder habe ich Dich irgendwie falsch verstanden?

Woher ich das weiß:Berufserfahrung – IT-Administrator (i.R.)

augsburgchris 
Beitragsersteller
 17.01.2013, 16:02

Genau das ist das Problem. Ich habe die Farben nicht aus der Standadpalette und bekomme wenn ich die Zelle über Interior.Colorindex auslese bei 7 möglichen Zellen 5 mal die 2 und 2 mal die 19. Also gehe ich davon aus das die Farbe keinen direkten Colorindex hat. Der geht ja soweit ich weiss nur bis 256. Meine Farben sind aber aus der 32bit-Palette.

dann mach ichs über kopieren und Zahlenformat und Schriftfarbe einzeln zurückstellen. ist zwar bei 20 Spalten ein bissi Aufwand aber OK. Sollte dir noch was Schlaues einfallen wäre ich dankbar.

0
Oubyi, UserMod Light  17.01.2013, 16:08
@augsburgchris

Meine Antwort zu DIESEM Kommentar von Dir (also der mit: "Genau das ist...")
Warum nicht mit:

ActiveCell.Interior.Color = Range("A1").Interior.Color

P.S.: Ist aber auch wirklich etwas durcheinander im Moment.
[ES, nicht ICH!]

0
Oubyi, UserMod Light  17.01.2013, 16:04

FESTLEGEN kannst Du die Zellfarbe auch mit RBG-Werten, und zwar so:

ActiveCell.Interior.Color = RGB(146, 42, 131)

Nur habe ich noch nicht herausgefunden, wie man die RGB-Werte AUSlesen kann (außer halt wie oben beschrieben händisch).

P.S.: Hat sich schon wieder überschnitten, diesmal mit Deinem Kommentar zu meiner Antwort.

0

Wenn du eine Farbe auswählst die keine Standartfarbe ist dann macht man das meist auf einer Farbpalette wo man den Regler stufenlos verstellen kann. Geh mal auf die Zelle und schau dir die Farbe an, welche du haben möchtest. Meinst sind unter der Palette zahlen angegeben, welche die Anteile der einzelnen Grundfarben angeben. Diese Zahlen musst du dann nur in deine neue Zelle übernehmen.


augsburgchris 
Beitragsersteller
 17.01.2013, 15:57

Sorry vergessen zu erwähnen das ich die Zelle mit VBA färben will. Leider weiss ich in VBA keine Möglichkeit den RGB-Anteil zu vergeben. Weisst du eine?

0

Wähle die Zelle mit der Farbe aus. Klicke oben auf "Format übertragen" (Registerblatt Start weit links) und klicke dann in deine Zielzelle, in der du die Farbe haben willst.


augsburgchris 
Beitragsersteller
 17.01.2013, 15:55

dann übertragt er ja alle Formate was ich ja gerade verhindern will.

0
Alondro666  17.01.2013, 16:07
@augsburgchris

Aber eben auch die Farbe damit automatisch. Die restlichen Formate wie Schriftart und Rahmen etc. kannst du ja dann nachher wieder von Hand einstellen. Ich würd mir da jetzt nicht den Aufwand mit VBA machen, wenn du eh nur die Farbe auf eine Zelle kopieren willst.

0
augsburgchris 
Beitragsersteller
 17.01.2013, 16:11
@Alondro666

Wie gesagt leider vergessen das es über VBA laufen soll da eine größere Liste abgearbeitet werden soll mit verschiedenen Hintergrundfarben abgearbeitet werden soll. Danke trotzdem.

0
Hallo augsburgschris,

Ich musste selbst mal die RGB-Werte einiger Farben auslesen. Dazu empfehle ich dir diese Funktion:

Public   Function GetRGB(RGB As Long, ByRef R As Integer, ByRef G As Integer, ByRef B As Integer)
    R = RGB And 255
    G = RGB \ 256 And 255
    B = RGB \ 256 ^ 2 And 255
End Function

Sub Test()
    Dim R As Integer
    Dim G As Integer
    Dim B As Integer
    GetRGB Cells(1, 1).Interior.Color, R, G, B
    MsgBox (R & ";" & G & ";" & B)
End Sub

Erklärung:

  • Die eingentliche Lösung ist die Funktion - das Makro danach ist nur zu Testzwecken und zur Veranschaulichung da...
  • RGB -> Hiermit übergibst du der Funktion die RGB-Werte aus einer Zelle oder einem Bereich
  • R, G, B -> das sind dann die zurückgelieferten Werte für die Farben
  • Nachdem die Funktion durchlaufen ist, kannst du die erhaltenen RGB-Werte weiterverwenden.

Das Setzen der Farben funktioniert so, wie Oubyi beschrieben hat - dies Bedarf daher keiner weiteren Erklärung.

Ich hoffe, ich konnte dir helfen :D

Mit freundlichen Grüssen

Higlav


Iamiam  18.01.2013, 00:56

ist zwar eine mir völlig neue Art, Variable zu definieren (das And heißt wohl: einschließlich?), aber es funktioniert einwandfrei. DH!
Hab lediglich Cells(1, 1) durch ActiveCell ersetzt zum Testen. **** Wird meine alten grauen Zellen wohl noch ein bisschen beschäftigen, bis ich das gefressen hab!...
Ich hab dazu immer einen Elefanten an Formalismus gebraucht, zB in www.gutefrage.net/frage/wieso-liefert-in-excel-vba-die-funktion-interiorcolorindex-verschiedene-werte-zurueck

1
Oubyi, UserMod Light  18.01.2013, 16:11
DH!

Ich hatte mir zwar gedacht, dass man aus der Zahl, die .Color zurückgibt (z.B.: 8596114) irgendwie die RGB-Werte bekommt, aber dass man dazu SO tricksen muss... .
Ich habe jetzt in der Hilfe zu AND (das ich nur als einfachen Operator kannte) gelesen:

"Der Operator And führt darüber hinaus einen bitweisen Vergleich gleich positionierter Bits in zwei numerischen Ausdrücken durch und legt das zugehörige Bit in Ergebnis gemäß der folgenden Tabelle fest: ..."

Ich denke DA liegt der "Hund begraben".
Aber richtig genau verstehe ich das nicht und muss ich ja auch nicht, Hauptsache, ich weiß jetzt wie es geht.

Danke für die interessante INFO!

1
Iamiam  18.01.2013, 19:17
@Oubyi, UserMod Light

@Oubyi: danke für den Hinweis zu AND ! (habs auch noch nicht verstanden, aber hilft mir beim Näherkommen!)

0