2014-02-06 5 views
2

Я хотел бы получить цвет фона ячейки в листе Excel с помощью формулы или VGA. Я нашел этот UDF:Получить цвет фона ячейки Excel шестнадцатеричное значение

Public Function BColor(r As Range) As Long 
BColor = r(1).Interior.ColorIndex 
End Function 

Он может быть использован, как это в клетке: =BColor(A1) Я не знаком с VGA, это возвращает некоторое длинное значение, и мне интересно, если это возможно, чтобы получить шестнадцатеричное значение непосредственно. Спасибо!

+0

Почему голос? : -s –

+1

, возможно, это займет меньше 10 секунд, чтобы найти ответ на ваш вопрос, используя Google –

+0

Я не спустил вас вниз, но я думаю, что это из-за отсутствия исследований. Вы искали google о том, как преобразовать Long Value в Hex в VBA? Существует так много примеров. –

ответ

5

попробовать это

Function HexCode(Cell As Range) As String 
    HexCode = Right("000000" & Hex(Cell.Interior.Color), 6) 
End Function 
3

Я попытался выше код, но он возвращается значение BGR (как это было предложено)

Однако этот код возвращает значение RGB Hex. Я просто не могу получить его для автоматического обновления.

Public Function HexCodeRGB(cell As Range) As String 
HexCodeBGR = Right("000000" & Hex(cell.Interior.Color), 6) 
HexCodeRGB = Right(HexCodeBGR, 2) & Mid(HexCodeBGR, 3, 2) & Left(HexCodeBGR, 2) 
End Function 

Успехов

0

на основе лучших проголосовали ответ, вот пример реального случая, мой случай. Я поставляю его как макрос и скриншоты. Надеюсь, это поможет кому-то.

Макрос VBA прост, но вставьте его здесь. Если вы посмотрите на привязанности, вы увидите, что я дублировал этот столбец и очистил название цветов на испанском языке и с названием столбца «цвета», то я запустить этот макрос:

Sub printHEXBGColor() 
Set r = Range("myRange") 
Dim HEXcolor As String 
Dim i As Long 

For i = 1 To r.Rows.Count 
    r.Cells(i, 1).Activate 
    HEXcolor = "#" + Right("000000" & Hex(ActiveCell.Interior.Color), 6) 
    ActiveCell = HEXcolor 
Next i 
End Sub 

Screenshot of the result

Смежные вопросы