Vba excel проверить цвет ячейки

Заливка ячейки цветом в VBA Excel. Фон ячейки. Свойства .Interior.Color и .Interior.ColorIndex. Цветовая модель RGB. Стандартная палитра. Очистка фона ячейки.

Свойство .Interior.Color объекта Range

Начиная с Excel 2007 основным способом заливки диапазона или отдельной ячейки цветом (зарисовки, добавления, изменения фона) является использование свойства .Interior.Color объекта Range путем присваивания ему значения цвета в виде десятичного числа от 0 до 16777215 (всего 16777216 цветов).

Заливка ячейки цветом в VBA Excel

Пример кода 1:

Sub ColorTest1()

Range(«A1»).Interior.Color = 31569

Range(«A4:D8»).Interior.Color = 4569325

Range(«C12:D17»).Cells(4).Interior.Color = 568569

Cells(3, 6).Interior.Color = 12659

End Sub

Поместите пример кода в свой программный модуль и нажмите кнопку на панели инструментов «Run Sub» или на клавиатуре «F5», курсор должен быть внутри выполняемой программы. На активном листе Excel ячейки и диапазон, выбранные в коде, окрасятся в соответствующие цвета.

Есть один интересный нюанс: если присвоить свойству .Interior.Color отрицательное значение от -16777215 до -1, то цвет будет соответствовать значению, равному сумме максимального значения палитры (16777215) и присвоенного отрицательного значения. Например, заливка всех трех ячеек после выполнения следующего кода будет одинакова:

Sub ColorTest11()

Cells(1, 1).Interior.Color = 12207890

Cells(2, 1).Interior.Color = 16777215 + (12207890)

Cells(3, 1).Interior.Color = 4569325

End Sub

Проверено в Excel 2016.

Вывод сообщений о числовых значениях цветов

Числовые значения цветов запомнить невозможно, поэтому часто возникает вопрос о том, как узнать числовое значение фона ячейки. Следующий код VBA Excel выводит сообщения о числовых значениях присвоенных ранее цветов.

Пример кода 2:

Sub ColorTest2()

MsgBox Range(«A1»).Interior.Color

MsgBox Range(«A4:D8»).Interior.Color

MsgBox Range(«C12:D17»).Cells(4).Interior.Color

MsgBox Cells(3, 6).Interior.Color

End Sub

Вместо вывода сообщений можно присвоить числовые значения цветов переменным, объявив их как Long.

Использование предопределенных констант

В VBA Excel есть предопределенные константы часто используемых цветов для заливки ячеек:

Предопределенная константа Наименование цвета
vbBlack Черный
vbBlue Голубой
vbCyan Бирюзовый
vbGreen Зеленый
vbMagenta Пурпурный
vbRed Красный
vbWhite Белый
vbYellow Желтый
xlNone Нет заливки

Присваивается цвет ячейке предопределенной константой в VBA Excel точно так же, как и числовым значением:

Пример кода 3:

Range(«A1»).Interior.Color = vbGreen

Цветовая модель RGB

Цветовая система RGB представляет собой комбинацию различных по интенсивности основных трех цветов: красного, зеленого и синего. Они могут принимать значения от 0 до 255. Если все значения равны 0 — это черный цвет, если все значения равны 255 — это белый цвет.

Выбрать цвет и узнать его значения RGB можно с помощью палитры Excel:

Палитра Excel

Палитра Excel

Чтобы можно было присвоить ячейке или диапазону цвет с помощью значений RGB, их необходимо перевести в десятичное число, обозначающее цвет. Для этого существует функция VBA Excel, которая так и называется — RGB.

Пример кода 4:

Range(«A1»).Interior.Color = RGB(100, 150, 200)

Список стандартных цветов с RGB-кодами смотрите в статье: HTML. Коды и названия цветов.

Очистка ячейки (диапазона) от заливки

Для очистки ячейки (диапазона) от заливки используется константа xlNone:

Range(«A1»).Interior.Color = xlNone

Свойство .Interior.ColorIndex объекта Range

До появления Excel 2007 существовала только ограниченная палитра для заливки ячеек фоном, состоявшая из 56 цветов, которая сохранилась и в настоящее время. Каждому цвету в этой палитре присвоен индекс от 1 до 56. Присвоить цвет ячейке по индексу или вывести сообщение о нем можно с помощью свойства .Interior.ColorIndex:

Пример кода 5:

Range(«A1»).Interior.ColorIndex = 8

MsgBox Range(«A1»).Interior.ColorIndex

Просмотреть ограниченную палитру для заливки ячеек фоном можно, запустив в VBA Excel простейший макрос:

Пример кода 6:

Sub ColorIndex()

Dim i As Byte

For i = 1 To 56

Cells(i, 1).Interior.ColorIndex = i

Next

End Sub

Номера строк активного листа от 1 до 56 будут соответствовать индексу цвета, а ячейка в первом столбце будет залита соответствующим индексу фоном.

Подробнее о стандартной палитре Excel смотрите в статье: Стандартная палитра из 56 цветов, а также о том, как добавить узор в ячейку.


 

БМВ

Модератор

Сообщений: 21378
Регистрация: 28.12.2016

Excel 2013, 2016

#4

17.05.2019 07:53:37

ARTD, а как они будут заливаться? Если руками, то однозначно VBA(хотя можно извратится макрофункциями, но есть ли смысл), при этом надо помнить, что на изменение цвета реакции не будет и надо принудительно запускать или пересчет, в случае UDF или запускать скрипт. Если условное форматирование, то можно и формулами, на основании условия.

Изменено: БМВ17.05.2019 07:54:47

По вопросам из тем форума, личку не читаю.

Продолжу тему:
Вышеприведённые примеры работают только при отсутствии условного форматирования на исследуемой ячейке. Если же цвет заливки изменён условным форматированием, например:

Visual Basic
1
2
.Range("A5:A8000").FormatConditions.Add(xlCellValue, 3, "=""J""").Interior.Color = 15773696
.Range("A5:A8000").Interior.Color = 0

Если, скажем, в ячейке А10 будет находиться «J» (без кавычек), эта ячейка будет синяя (код цвета 15773696), а Вышеприведённые примеры покажут «0».
Может кто подскажет, как определить ВИДИМЫЙ цвет ячейки?
Кстати: автофильтр по цвету учитывает именно ВИДИМЫЙ цвет, но понять из записанного макроса как определить цвет конкретной ячейки не представляется возможным:

Visual Basic
1
2
3
4
5
Sub test()
    ActiveSheet.Range("$A$4:$AG$7033").AutoFilter Field:=1, Criteria1:=RGB(153 _
        , 255, 204), Operator:=xlFilterCellColor
    Range("A380").Select
End Sub

Когда вы получаете лист с несколькими цветными ячейками, как показано на скриншоте ниже, в некоторых случаях вам может потребоваться определить индекс цвета фона этих цветных ячеек. Нет встроенной функции, которая может определить индекс цвета ячейки, но в этой статье я представлю некоторые коды VBA для быстрого решения этой задачи в Excel.
док определить индекс цвета 1

Определите цвет ячейки с помощью VBA


Определите цвет ячейки с помощью VBA

Выполните следующие шаги, чтобы определить цвет ячейки с помощью VBA.

1. Нажмите Alt + F11 ключи для включения Microsoft Visual Basic для приложений окно.
док определить индекс цвета 2

2. Нажмите Вставить > Модули открыть новый Модули и вставьте ниже код VBA в пустой скрипт. Смотрите скриншот:

VBA: получить традиционный шестнадцатеричный код ячейки

Function getRGB1(FCell As Range) As String
'UpdatebyExtendoffice20170714
    Dim xColor As String
    xColor = CStr(FCell.Interior.Color)
    xColor = Right("000000" & Hex(xColor), 6)
    getRGB1 = Right(xColor, 2) & Mid(xColor, 3, 2) & Left(xColor, 2)
End Function

3. Сохраните код и закройте окно VBA. Выберите пустую ячейку рядом с цветной ячейкой, введите эту формулу, = getRGB1 (A16), затем перетащите маркер автозаполнения на ячейки, которые вы хотите использовать. Смотрите скриншот:

Наконечник: Есть еще несколько кодов, которые могут определить цветовой индекс ячейки.

1. VBA: десятичное значение для каждого кода

Function getRGB2(FCell As Range) As String
   'UpdatebyExtendoffice20170714  
    Dim xColor As Long
    Dim R As Long, G As Long, B As Long
    xColor = FCell.Interior.Color
    R = xColor Mod 256
    G = (xColor  256) Mod 256
    B = (xColor  65536) Mod 256
    getRGB2 = "R=" & R & ", G=" & G & ", B=" & B
End Function

Результат:
док определить индекс цвета 7

2. VBA: десятичные значения

Function getRGB3(FCell As Range, Optional Opt As Integer = 0) As Long
 'UpdatebyExtendoffice20170714
    Dim xColor As Long
    Dim R As Long, G As Long, B As Long
    xColor = FCell.Interior.Color
    R = xColor Mod 256
    G = (xColor  256) Mod 256
    B = (xColor  65536) Mod 256
    Select Case Opt
        Case 1
            getRGB3 = R
        Case 2
            getRGB3 = G
        Case 3
            getRGB3 = B
        Case Else
            getRGB3 = xColor
    End Select
End Function

Результат:
док определить индекс цвета 8



Относительные статьи:

  • Как изменить цвет шрифта в зависимости от значения ячейки в Excel?
  • Как раскрасить повторяющиеся значения или повторяющиеся строки в Excel?

Лучшие инструменты для работы в офисе

Kutools for Excel Решит большинство ваших проблем и повысит вашу производительность на 80%

  • Снова использовать: Быстро вставить сложные формулы, диаграммы и все, что вы использовали раньше; Зашифровать ячейки с паролем; Создать список рассылки и отправлять электронные письма …
  • Бар Супер Формулы (легко редактировать несколько строк текста и формул); Макет для чтения (легко читать и редактировать большое количество ячеек); Вставить в отфильтрованный диапазон
  • Объединить ячейки / строки / столбцы без потери данных; Разделить содержимое ячеек; Объединить повторяющиеся строки / столбцы… Предотвращение дублирования ячеек; Сравнить диапазоны
  • Выберите Дубликат или Уникальный Ряды; Выбрать пустые строки (все ячейки пустые); Супер находка и нечеткая находка во многих рабочих тетрадях; Случайный выбор …
  • Точная копия Несколько ячеек без изменения ссылки на формулу; Автоматическое создание ссылок на несколько листов; Вставить пули, Флажки и многое другое …
  • Извлечь текст, Добавить текст, Удалить по позиции, Удалить пробел; Создание и печать промежуточных итогов по страницам; Преобразование содержимого ячеек в комментарии
  • Суперфильтр (сохранять и применять схемы фильтров к другим листам); Расширенная сортировка по месяцам / неделям / дням, периодичности и др .; Специальный фильтр жирным, курсивом …
  • Комбинируйте книги и рабочие листы; Объединить таблицы на основе ключевых столбцов; Разделить данные на несколько листов; Пакетное преобразование xls, xlsx и PDF
  • Более 300 мощных функций. Поддерживает Office/Excel 2007-2021 и 365. Поддерживает все языки. Простое развертывание на вашем предприятии или в организации. Полнофункциональная 30-дневная бесплатная пробная версия. 60-дневная гарантия возврата денег.

вкладка kte 201905


Вкладка Office: интерфейс с вкладками в Office и упрощение работы

  • Включение редактирования и чтения с вкладками в Word, Excel, PowerPoint, Издатель, доступ, Visio и проект.
  • Открывайте и создавайте несколько документов на новых вкладках одного окна, а не в новых окнах.
  • Повышает вашу продуктивность на 50% и сокращает количество щелчков мышью на сотни каждый день!

офисный дно

Комментарии (3)


Оценок пока нет. Оцените первым!

Заливка ячейки цветом в VBA Excel. Фон ячейки. Свойства
.Interior.Color и .Interior.ColorIndex. Цветовая модель RGB. Стандартная
палитра из 56 цветов.

  1. Свойство .Interior.Color объекта Range
    • Заливка ячейки цветом в VBA Excel
    • Вывод сообщений о числовых значениях цветов
    • Использование предопределенных констант
    • Цветовая модель RGB
  2. Свойство .Interior.ColorIndex объекта Range

Свойство .Interior.Color объекта Range

Начиная с Excel 2007 основным способом заливки диапазона или
отдельной ячейки цветом (зарисовки, добавления, изменения фона) является
использование свойства .Interior.Color объекта Range путем присваивания
ему значения цвета в виде десятичного числа от 0 до 16777215 (всего 
16777216 цветов).

Заливка ячейки цветом в VBA Excel

Пример кода 1:

1

2

3

4

5

6

Sub ColorTest1()

Range("A1").Interior.Color = 31569

Range("A4:D8").Interior.Color = 4569325

Range("C12:D17").Cells(4).Interior.Color = 568569

Cells(3, 6).Interior.Color = 12659

End Sub

Поместите пример кода в свой программный модуль и нажмите кнопку на
панели инструментов «Run Sub» или на клавиатуре «F5», курсор должен быть
внутри выполняемой программы. На активном листе Excel ячейки и
диапазон, выбранные в коде, окрасятся в соответствующие цвета.

Есть один интересный нюанс: если присвоить свойству .Interior.Color
отрицательное значение от -16777215 до -1, то цвет будет
соответствовать значению, равному сумме максимального значения палитры
(16777215) и присвоенного отрицательного значения. Например, заливка
всех трех ячеек после выполнения следующего кода будет одинакова:

1

2

3

4

5

Sub ColorTest11()

Cells(1, 1).Interior.Color = -12207890

Cells(2, 1).Interior.Color = 16777215 + (-12207890)

Cells(3, 1).Interior.Color = 4569325

End Sub

Проверено в Excel 2016.

Вывод сообщений о числовых значениях цветов

Числовые значения цветов запомнить невозможно, поэтому часто
возникает вопрос о том, как узнать числовое значение фона ячейки.
Следующий код VBA Excel выводит сообщения о числовых значениях
присвоенных ранее цветов.

Пример кода 2:

1

2

3

4

5

6

Sub ColorTest2()

MsgBox Range("A1").Interior.Color

MsgBox Range("A4:D8").Interior.Color

MsgBox Range("C12:D17").Cells(4).Interior.Color

MsgBox Cells(3, 6).Interior.Color

End Sub

Вместо вывода сообщений можно присвоить числовые значения цветов переменным, объявив их как Long.

Использование предопределенных констант

В VBA Excel есть предопределенные константы часто используемых цветов для заливки ячеек:

Предопределенная константа Наименование цвета
vbBlack Черный
vbBlue Голубой
vbCyan Бирюзовый
vbGreen Зеленый
vbMagenta Пурпурный
vbRed Красный
vbWhite Белый
vbYellow Желтый

Присваивается цвет ячейке предопределенной константой в VBA Excel точно так же, как и числовым значением:

Пример кода 3:

1

Range("A1").Interior.Color = vbGreen

Цветовая модель RGB

Цветовая система RGB представляет собой комбинацию различных по
интенсивности основных трех цветов: красного, зеленого и синего. Они
могут принимать значения от 0 до 255. Если все значения равны 0 — это
черный цвет, если все значения равны 255 — это белый цвет.

Выбрать цвет и узнать его значения RGB можно с помощью палитры Excel:

Палитра ExcelОткрывается в новом окне

Палитра Excel

Чтобы можно было присвоить ячейке или диапазону цвет с помощью
значений RGB, их необходимо перевести в десятичное число, обозначающее
цвет. Для этого существует функция VBA Excel, которая так и называется
— RGB.

Пример кода 4:

1

Range("A1").Interior.Color = RGB(100, 150, 200)

Свойство .Interior.ColorIndex объекта Range

До появления Excel 2007 существовала только ограниченная палитра для
заливки ячеек фоном, состоявшая из 56 цветов, которая сохранилась и в
настоящее время. Каждому цвету в этой палитре присвоен индекс от 1 до
56. Присвоить цвет ячейке по индексу или вывести сообщение о нем можно с
помощью свойства .Interior.ColorIndex:

Пример кода 5:

1

2

Range("A1").Interior.ColorIndex = 8

MsgBox Range("A1").Interior.ColorIndex

Просмотреть ограниченную палитру для заливки ячеек фоном можно, запустив в VBA Excel простейший макрос:

Пример кода 6:

1

2

3

4

5

6

Sub ColorIndex()

Dim i As Byte

For i = 1 To 56

Cells(i, 1).Interior.ColorIndex = i

Next

End Sub

Номера строк активного листа от 1 до 56 будут соответствовать индексу
цвета, а ячейка в первом столбце будет залита соответствующим индексу
фоном.

Готовую стандартную палитру из 56 цветов можете посмотреть здесь .

Понравилась статья? Поделить с друзьями:
  • Vba excel примеры для чайников
  • Vba excel проверить пустая ячейка или нет
  • Vba excel проверить наличие файла в папке
  • Vba excel пример поиск
  • Vba excel проверить значение переменной