Как получить значение цвета HEX из цвета ячейки?

Я хочу получить значение цвета HEX из цвета ячейки (диапазона).

Следующие ссылки дают неправильные результаты.

https://stackoverflow.com/a/24216193/13075931

https://stackoverflow.com/a/50479544/13075931

Подробное объяснение вы можете найти по следующей ссылке.

Подробное объяснение

Заранее спасибо.

Обновлено: спасибо за хорошие ответы, но я нашел лучшие решения по следующей ссылке.

https://excelribbon.tips.net/T010180_Determining_the_RGB_Value_of_a_Color.html

Первая ссылка дает частичное объяснение обсуждения: значение RGB в VBA форматируется иначе, чем значение HEX в палитре цветов. В VBA буква B является наиболее значимой частью. В ответе, указанном по второй ссылке, есть ошибка; Я просто оставил там комментарий.

Paul 16.08.2024 11:04
Преобразование HTML-таблицы в профессиональный документ Excel
Преобразование HTML-таблицы в профессиональный документ Excel
Это самый простой способ создания Excel из HTML-таблицы.
Импорт excel в laravel в базу данных
Импорт excel в laravel в базу данных
Здравствуйте, дорогой читатель, в этой статье я расскажу практическим и быстрым способом, как импортировать файл Excel в вашу базу данных с помощью...
0
1
53
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Это обеспечивает шестнадцатеричные значения RGB в правильном порядке и с двумя цифрами каждое (т. е. для каждого цвета):

Function GetHexColor(cel As Range) As String
    If cel.Cells.Count <> 1 Then Exit Function
    Dim lColorNum As Long, iRed As Integer, iGreen As Integer, iBlue As Integer
    lColorNum = cel.Interior.Color
    iRed = lColorNum And 255
    iGreen = lColorNum \ 256 And 255
    iBlue = lColorNum \ 256 ^ 2 And 255
    GetHexColor = Right$("0" & Hex(iRed), 2) & Right$("0" & Hex(iGreen), 2) & Right$("0" & Hex(iBlue), 2)
End Function

... возвращая 750D02 и AE0F21 для двух цветов из вашего связанного «подробного объяснения».

Ответ принят как подходящий

Проще

Function GetColorInHex(cc As Range) As String
  Dim s As String
  s = Hex(cc.Cells(1).Interior.Color)
  s = String(6 - Len(s), "0") & s
  GetColorInHex = Right(s, 2) & Mid(s, 3, 2) & Left(s, 2)
End Function

Другие вопросы по теме