2014-07-14 11 views
5

Ich habe eine Tabelle mit Zellen in der Spalte A mit Farben in ihrem HEX-Format. Ist es möglich, die benachbarte Zelle automatisch mit der Farbe zu füllen, die dem HEX-Wert entspricht?Füllen Sie eine Zelle mit Farbe auf der Grundlage seiner HEX-Wert in Excel 2013

Aus der bis jetzt durchgeführten Forschung verstehe ich, dass der VBA zuerst die HEX-Zeichenfolge in seinen RGB-Korrespondenten konvertieren und dann die Zellenfarbe mit dem Ergebnis füllen soll.

Zum Beispiel: wenn A1 den Wert "7fcac3" enthält (oder "# 7fcac3", aber ich glaube nicht, dass das Pfund erforderlich ist), sollte der VBA die benachbarte B-Zelle mit RGB füllen (127,202,195).

Unten ist ein Beispiel, wie der VBA aussehen könnte, gefunden (here). Das Problem ist, dass ich ein "Kompilierfehler: Ungültige außerhalb Prozedur" get Fehler in Excel 2013.

For i = 1 To LastRow 

Sub SetHexColors() 
Dim i, LastRow 
LastRow = Range("A" & Rows.Count).End(xlUp).Row 
For i = 1 To LastRow 
Cells(i, "B").Interior.Color = HEXCOL2RGB(Cells(i, "A")) 
Next 
End Sub 

Public Function HEXCOL2RGB(ByVal HexColor As String) As String 
Dim Red As String, Green As String, Blue As String 
HexColor = Replace(HexColor, "#", "") 
Red = Val("&H" & Mid(HexColor, 1, 2)) 
Green = Val("&H" & Mid(HexColor, 3, 2)) 
Blue = Val("&H" & Mid(HexColor, 5, 2)) 
HEXCOL2RGB = RGB(Red, Green, Blue) 
End Function 

Vielen Dank, Mathieu

Antwort

2

Die erste Codezeile:

For i = 1 To LastRow 

ist nicht im Inneren eines Sub oder einer Funktion. Sieht so aus, als wäre das eine Kopie einer Zeile, die Sie bereits in den Sub-SetHexColors haben, also würde ich erwarten, dass Sie nur diese erste Zeile auskommentieren oder löschen müssen. Die einzigen Codezeilen, die Sie außerhalb von Subs und Funktionen platzieren können, sind Variablendeklarationen und Dinge wie Option-Anweisungen (z. B. Option Explicit)

+0

Jetzt ist es auch aus den Anweisungen des Autors ersichtlich, danke, dass Sie das herausgebracht haben :) – Mathieu