Вернуть цвет фона выбранной ячейки - PullRequest
22 голосов
/ 06 февраля 2009

У меня есть электронная таблица, в которой ячейки окрашены значимым цветом.

Кто-нибудь знает, как я могу вернуть значение цвета фона текущей ячейки в листе Excel?

Ответы [ 4 ]

24 голосов
/ 06 февраля 2009

Вы можете использовать Cell.Interior.Color, я использовал его для подсчета количества ячеек в диапазоне, которые имеют заданный цвет фона (т.е. соответствуют моей легенде).

14 голосов
/ 26 февраля 2014

Если вы смотрите таблицу, сводную таблицу или что-то с условным форматированием, вы можете попробовать:

ActiveCell.DisplayFormat.Interior.Color

Это также, кажется, работает нормально на обычных ячейках.

7 голосов
/ 06 февраля 2009

Может быть, вы можете использовать эти свойства:

ActiveCell.Interior.ColorIndex - one of 56 preset colors

и

ActiveCell.Interior.Color - RGB color, used like that:

ActiveCell.Interior.Color = RGB(255,255,255)
2 голосов
/ 25 мая 2018

Приведенный ниже код дает значение HEX и RGB диапазона, отформатированного с использованием условного форматирования или иным образом Если диапазон не отформатирован с использованием условного форматирования, и вы намерены использовать функцию iColor в Excel как UDF. Это не сработает. Прочитайте приведенную ниже выдержку из MSDN .

Обратите внимание, что свойство DisplayFormat не работает в пользовательских функциях. Например, в функции листа, которая возвращает внутренний цвет ячейки, если вы используете строку, похожую на:

Range.DisplayFormat.Interior.ColorIndex

затем выполняется функция листа, возвращающая # ЗНАЧЕНИЕ! ошибка. Если вы не находите цвет условно отформатированного диапазона, тогда я рекомендую вам использовать

Range.Interior.ColorIndex

, тогда эта функция также может использоваться как UDF в Excel. Например, iColor (B1, "HEX")

Public Function iColor(rng As Range, Optional formatType As String) As Variant
'formatType: Hex for #RRGGBB, RGB for (R, G, B) and IDX for VBA Color Index
    Dim colorVal As Variant
    colorVal = rng.DisplayFormat.Interior.Color
    Select Case UCase(formatType)
        Case "HEX"
            iColor = "#" & Hex(colorVal Mod 256) & Hex((colorVal \ 256) Mod 256) & Hex((colorVal \ 65536))
        Case "RGB"
            iColor = (colorVal Mod 256) & ", " & ((colorVal \ 256) Mod 256) & ", " & (colorVal \ 65536)
        Case "IDX"
            iColor = rng.Interior.ColorIndex
        Case Else
            iColor = colorVal
    End Select
End Function

'Example use of the iColor function to get the background color of selected cells
Sub Get_Background_Color_Selection_Cells()
    Dim rng As Range

    For Each rng In Selection.Cells
        rng.Offset(0, 1).Value = iColor(rng, "HEX")
        rng.Offset(0, 2).Value = iColor(rng, "RGB")
    Next
End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...