Перейти к содержимому
Промокоды на отели, автобусные, жд и авиабилеты >>
(Реклама. ООО «Новые Туристические Технологии». ИНН 7724929270)

VBA Excel. Цвет ячейки (заливка, фон)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    Палитра Excel
    Палитра Excel

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

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

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

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

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

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

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

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

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

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

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

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


    Содержание рубрики VBA Excel по тематическим разделам со ссылками на все статьи.

    86 комментариев для “VBA Excel. Цвет ячейки (заливка, фон)”

    1. Здравствуйте! Как определить составляющие цвета: Красный, Зеленый, Синий у закрашенной ячейки?

    2. Возможно ли с помощью функции (без обращения к разделу «Условное форматирование») интерактивно менять цвет заливки в ячейке? Пример: у меня в ячейке записано 100, и цвет заливки жёлтый. Я изменяю значение ячейки на 120, и цвет заливки меняется на красный. Повторю: через условное форматирование я это могу описать, но тогда придётся назначать правила каждой ячейке таблицы, где это необходимо. А можно ли это сделать в виде функции, чтобы потом применить подобное к диапазону ячеек разом?

      1. Евгений

        Михаил, вам не нужно назначать правила каждой ячейке, назначьте сразу всей таблице:

        Также вы можете выбрать для назначения правила не всю таблицу сразу, а в виде нескольких нужных диапазонов. Они будут записаны в одну строку через точку с запятой (;).

    3. Здравствуйте! а как вывести на экран название цвета листа, а не его индекс?

      1. Евгений

        Здравствуйте, Ольга!
        Вы можете использовать конструкцию с оператором Select Case, чтобы по значению ColorIndex выводить название цвета. Соответствие названий цветов числовым индексам вы можете взять из статьи Стандартная палитра из 56 цветов.

    Обсуждение закрыто.