2014-07-14 10 views
5

Mam arkusz kalkulacyjny z komórkami w kolumnie A zawierającej kolory w formacie HEX. Czy możliwe jest automatyczne wypełnienie sąsiedniej komórki kolorem odpowiadającym wartości HEX?Wypełnij komórkę kolorem opartym na jego wartości HEX w programie Excel 2013

Z badań wykonanych do tej pory rozumiem, że VBA powinien najpierw przekonwertować ciąg HEX na jego korespondenta RGB, a następnie wypełnić kolor komórki wynikiem.

Np .: jeśli A1 zawiera wartość "7fcac3" (lub "# 7fcac3", ale nie sądzę, że funt jest wymagany), VBA powinien wypełnić sąsiadującą komórkę B RGB (127 202 152).

Poniżej znajduje się przykład tego, jak VBA może wyglądać, znaleźć (here). Problemem jest to, że dostaję "Błąd kompilacji: Nieprawidłowe postępowanie z zewnątrz" błąd w programie 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 

Wielkie dzięki, Mathieu

Odpowiedz

2

Pierwsza linia kodu:

For i = 1 To LastRow 

nie znajduje się wewnątrz Sub lub funkcji. Wygląda na to, że jest to kopia linii, którą już masz w Sub SetHexColors, więc oczekiwałbym po prostu komentarza lub usunięcia tego pierwszego wiersza. Jedynymi liniami kodu, które można wstawić poza zasób i funkcje, są deklaracje zmiennych i takie, jak instrukcje opcji (np. Opcja Jawna)

+0

Teraz to również wynika z instrukcji autora, dzięki za wskazanie tego :) – Mathieu

Powiązane problemy