Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: RGB-Farbe auslesen ?

RGB-Farbe auslesen ?
24.02.2006 12:23:59
Selma
Hallo Leute,
in aktivem Arbeitsblatt möchte ich die RGB-Farbe in Spalte E ab Zeile 2 auslesen.
Meine RGB-Werte stehen in Spalte B, C, D (ab Zeile 2).
Wie mache ich das?
Vielen Dank im Voraus...
Liebe Grüße
Selma
Anzeige

12
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: RGB-Farbe auslesen ?
24.02.2006 12:29:45
Nepumuk
Hallo Selma,
das ist jetzt nicht ganz klar. Wo kommt was her und wo soll was hin?
Gruß
Nepumuk

AW: RGB-Farbe auslesen ?
24.02.2006 12:56:37
Selma
Hallo Nepumuk,
anbei die Beispieldatei: https://www.herber.de/bbs/user/31383.xls
In Spalte E (ab Zeile 2) sollen die Farben stehen.
LG
Selma
Anzeige
AW: RGB-Farbe auslesen ?
24.02.2006 13:01:18
Ceci
Hallo Selma,
dann müsste mein kleines Makro funktionieren, so hab ich es getestet. Du musst halt den Tabellenblattnamen anpassen...
mfg Ceci
AW: RGB-Farbe auslesen ?
24.02.2006 13:06:41
Nepumuk
Hallo Selma,
da gibt es ein Problem. In einer Tabelle sind nur 56 Farben darstellbar. Excel passt also die RGB-Farben automatisch an die darstellbare Farbe an. Wenn du z.B. Labels in die Zellen einfügen würdest, dann könnten die Farben richtig dargestellt werden. Das ganze kannst du auch per VBA machen. Wäre das OK?
Gruß
Nepumuk

Anzeige
AW: RGB-Farbe auslesen ?
24.02.2006 13:18:41
Selma
Hallo Nepumuk,
das wäre auch OK !
LG
Selma
AW: RGB-Farbe auslesen ?
24.02.2006 13:46:50
Nepumuk
Hallo Selma,
in deiner Tabelle sind ein paar doppelte drin.
Hier der Code zum erzeugen der Labels:
Public Sub selmasRGB()
    Dim lngRow As Long
    Dim objColor As OLEObject
    Application.ScreenUpdating = False
    For lngRow = 2 To Cells(Rows.Count, 1).End(xlUp).Row
        Set objColor = ActiveSheet.OLEObjects.Add(ClassType:="Forms.Label.1", _
            Left:=Columns(5).Left, Top:=Rows(lngRow).Top, _
            Width:=Columns(5).Width, Height:=Rows(lngRow).Height)
        objColor.Object.Caption = ""
        objColor.Object.BackColor = RGB(Cells(lngRow, 2).Value, _
            Cells(lngRow, 3).Value, Cells(lngRow, 4).Value)
    Next
    Application.ScreenUpdating = True
End Sub

Und noch eine kleine Routine zum löschen der selben:
Public Sub DeleteLabel()
    Dim objColor As OLEObject
    For Each objColor In ActiveSheet.OLEObjects
        objColor.Delete
    Next
End Sub

Gruß
Nepumuk

Anzeige
warum auch immer...
24.02.2006 14:17:51
u_
Hallo,
..das ist vielleicht nicht so schön aber handgestoppt 9x schneller:

Sub test()
Dim intX As Single, intY As Single, intH As Single, intW As Single
Dim i As Long, sh As Shape
Dim R As Byte, G As Byte, B As Byte
Application.ScreenUpdating = False
For Each sh In ActiveSheet.Shapes
If sh.Name Like "rctCol*" Then sh.Delete
Next
For i = 2 To Range("a65536").End(xlUp).Row
With Cells(i, 5)
intX = .Left
intY = .Top
intH = .Height
intW = .Width
R = .Offset(0, -3)
G = .Offset(0, -2)
B = .Offset(0, -1)
End With
Set sh = ActiveSheet.Shapes.AddShape(msoShapeRectangle, intX, intY, intW, intH)
With sh
.Name = "rctCol_" & i
With .Fill
.Visible = msoTrue
.Solid
.ForeColor.RGB = RGB(R, G, B)
.Transparency = 0#
End With
.Line.Visible = msoFalse
End With
Next
Application.ScreenUpdating = True
End Sub

Gruß
Geist ist geil!
Anzeige
AW: warum auch immer...
24.02.2006 14:28:08
Nepumuk
Hi u_,
weil ich nie mit Shapes arbeite.
Gruß
Nepumuk

AW: RGB-Farbe auslesen ?
24.02.2006 14:25:28
Selma
Hallo Nepumuk,
super es hat prima geklappt...
Ich habe noch eine Frage dazu.
Und zwar besteht die Möglichkeit, wenn im Arbeitsblatt "Daten" z.B. in Zelle B9 = 25 steht
habe, das in Zelle C9 die richtige Farbe aus dem Arbeitsblatt "RGB" dargestellt wird?
Beispieldatei: https://www.herber.de/bbs/user/31385.xls
LG
Selma
Anzeige
AW: RGB-Farbe auslesen ?
25.02.2006 00:08:51
Nepumuk
Hallo Selma,
dazu müssen in der Tabelle RGB nur die Werte drin sein. Das Makro ist natürlich nur für diese Konstellation. Wenn du am Tabellenaufbau einer der beiden Tabellen was änderst, musst du es natürlich anpassen.
https://www.herber.de/bbs/user/31402.xls
Gruß
Nepumuk

Anzeige
Danke Nepumuk !!!
28.02.2006 17:41:47
Selma
Danke Nepumuk !!!
LG
SELMA
AW: RGB-Farbe auslesen ?
24.02.2006 12:54:12
Ceci
Hallo Selma,
versuch mal folgendes:

Sub test()
Dim Zaehler As Integer
Dim Wert1   As Integer
Dim Wert2   As Integer
Dim Wert3   As Integer
'Solange der Wert in Spalte 1 nicht leer ist, wird die Schleife durchgeführt
Do While Worksheets("Tabelle1").Cells(Zaehler + 2, 1).Value <> ""
Wert1 = Worksheets("TAbelle1").Cells(Zaehler + 2, 2).Value
Wert2 = Worksheets("TAbelle1").Cells(Zaehler + 2, 3).Value
Wert3 = Worksheets("TAbelle1").Cells(Zaehler + 2, 4).Value
Worksheets("Tabelle1").Cells(Zaehler + 2, 5).Interior.Color = _
RGB(Wert1, Wert2, Wert3)
Zaehler = Zaehler + 1
Loop
End Sub

mfg Ceci
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige

Infobox / Tutorial

RGB-Farbe in Excel auslesen


Schritt-für-Schritt-Anleitung

Um die RGB-Farbe in Excel auszulesen, kannst du VBA verwenden. Hier ist eine einfache Anleitung, wie du dabei vorgehst:

  1. Öffne dein Excel-Dokument und drücke ALT + F11, um den VBA-Editor zu öffnen.

  2. Füge ein neues Modul hinzu: Klicke mit der rechten Maustaste auf "VBAProject (deinDateiname)", wähle "Einfügen" und dann "Modul".

  3. Kopiere den folgenden Code in das Modul:

    Sub RGB_Farbe_auslesen()
       Dim lngRow As Long
       Dim objColor As OLEObject
       Application.ScreenUpdating = False
    
       For lngRow = 2 To Cells(Rows.Count, 1).End(xlUp).Row
           Set objColor = ActiveSheet.OLEObjects.Add(ClassType:="Forms.Label.1", _
               Left:=Columns(5).Left, Top:=Rows(lngRow).Top, _
               Width:=Columns(5).Width, Height:=Rows(lngRow).Height)
           objColor.Object.BackColor = RGB(Cells(lngRow, 2).Value, _
                                           Cells(lngRow, 3).Value, _
                                           Cells(lngRow, 4).Value)
       Next lngRow
    
       Application.ScreenUpdating = True
    End Sub
  4. Passe den Tabellenblattnamen an, falls nötig.

  5. Schließe den VBA-Editor und kehre zu Excel zurück.

  6. Führe das Makro aus: Drücke ALT + F8, wähle RGB_Farbe_auslesen und klicke auf "Ausführen".


Häufige Fehler und Lösungen

  • Problem: Die Farben werden nicht korrekt angezeigt.

    • Lösung: Überprüfe, ob die RGB-Werte in Spalte B, C und D korrekt sind und im richtigen Bereich liegen (0-255).
  • Problem: Makro läuft sehr langsam.

    • Lösung: Stelle sicher, dass Application.ScreenUpdating auf False gesetzt ist, um die Bildschirmaktualisierung auszuschalten.

Alternative Methoden

Du kannst auch die Funktion „Zellenfarbe auslesen“ verwenden, um die Farbe einer Zelle direkt zu ermitteln. Hier ist ein Beispiel:

Function ZellenfarbeAuslesen(rng As Range) As Long
    ZellenfarbeAuslesen = rng.Interior.Color
End Function

Mit dieser Funktion kannst du die Hintergrundfarbe einer Zelle abfragen und den Farbcode erhalten.


Praktische Beispiele

  1. Zellenfarbe auslesen: Um die Farbe einer bestimmten Zelle auszulesen, verwende die Funktion wie folgt:

    Sub BeispielFarbeAuslesen()
       Dim farbe As Long
       farbe = ZellenfarbeAuslesen(Sheets("Tabelle1").Cells(2, 1))
       MsgBox "Die Hintergrundfarbe der Zelle ist: " & farbe
    End Sub
  2. Farbcode auslesen: Um den Farbcode einer Zelle zu ermitteln, kannst du die Funktion in einer Formel verwenden, z.B. =ZellenfarbeAuslesen(A1) in einer anderen Zelle.


Tipps für Profis

  • Nutze die VBA-Funktion „ColorIndex“, um einfache Farben effizient zu verarbeiten.
  • Speichere dein Excel-Dokument als Makro-fähige Datei (.xlsm), um deine Makros zu nutzen.
  • Verwende Formeln wie =FORMEL.FARBE(A1) (abhängig von deiner Excel-Version), um Farben direkt in Zellen anzuzeigen.

FAQ: Häufige Fragen

1. Wie kann ich die Schriftfarbe einer Zelle auslesen?
Du kannst die Schriftfarbe mit der Font.Color-Eigenschaft auslesen:

Dim schriftfarbe As Long
schriftfarbe = Cells(1, 1).Font.Color

2. Gibt es eine Möglichkeit, die Hintergrundfarbe einer Zelle in eine andere Zelle zu kopieren?
Ja, du kannst einfach den Wert von Interior.Color in die Zielzelle zuweisen:

Cells(2, 2).Interior.Color = Cells(1, 1).Interior.Color

Mit diesen Anleitungen und Tipps kannst du die Farbe in Excel auslesen und deine VBA-Kenntnisse vertiefen.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige