Перейти к содержимому
Наше приложение «Дешевые авиабилеты» в AppGallery >>

VBA Excel. Цвет текста (шрифта) в ячейке

    Изменение цвета текста (шрифта) в ячейке рабочего листа Excel с помощью кода VBA. Свойства ячейки (диапазона) .Font.Color, .Font.ColorIndex и .Font.TintAndShade.

    Использование цветовой палитры для присвоения цвета тексту в ячейке листа Excel аналогично присвоению цвета фону ячейки, только свойство диапазона .Interior меняем на свойство .Font.

    Цвет текста и предопределенные константы

    Цвет шрифту в ячейке можно присвоить с помощью предопределенных констант:

    Напомню, что вместо индексов строк и столбцов можно использовать переменные. Список предопределенных констант смотрите здесь.

    Цвет шрифта и модель RGB

    Для изменения цвета текста в ячейке можно использовать цветовую модель RGB:

    Аргументы функции RGB могут принимать значения от 0 до 255. Если все аргументы равны 0, цвет — черный, если все аргументы равны 255, цвет — белый. Функция RGB преобразует числовые значения основных цветов (красного, зеленого и синего) в индекс основной палитры.

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

    Свойство .Font.ColorIndex

    Свойство .Font.ColorIndex может принимать значения от 1 до 56. Это стандартная ограниченная палитра, которая существовала до Excel 2007 и используется до сих пор. Посмотрите примеры:

    Таблица соответствия значений ограниченной палитры цвету:

    Стандартная палитра Excel из 56 цветов
    Стандартная палитра Excel из 56 цветов

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

    Свойство .Font.ThemeColor

    Свойство .Font.ThemeColor может принимать числовые или текстовые значения констант из коллекции MsoThemeColorIndex:

    Основная палитра

    Основная палитра, начиная c Excel 2007, состоит из 16777216 цветов. Свойство .Font.Color может принимать значения от 0 до 16777215, причем 0 соответствует черному цвету, а 16777215 — белому.

    Отрицательные значения свойства .Font.Color

    При записи в Excel макрорекордером макроса с присвоением шрифту цвета используются отрицательные значения свойства .Font.Color, которые могут быть в пределах от -16777215 до -1. Отрицательные значения соответствуют по цвету положительному значению, равному сумме наибольшего индекса основной палитры и данного отрицательного значения. Например, отрицательное значение -8257985 соответствует положительному значению 8519230, являющегося результатом выражения 16777215 + (-8257985). Цвета текста двух ячеек из следующего кода будут одинаковы:

    Свойство .Font.TintAndShade

    Еще при записи макроса с присвоением шрифту цвета макрорекордером добавляется свойство .Font.TintAndShade, которое осветляет или затемняет цвет и принимает следующие значения:

    • -1 — затемненный;
    • 0 — нейтральный;
    • 1 — осветленный.

    При тестировании этого свойства в Excel 2016, сравнивая затемненные и осветленные цвета, разницы не заметил. Сравните сами:

    В первые три ячейки первого столбца записывается одинаковый текст для удобства сравнения оттенков.

    Разноцветный текст в ячейке

    Отдельным частям текста в ячейке можно присвоить разные цвета. Для этого используется свойство Range.Characters:

    Результат работы кода:

    Разноцветный текст в ячейке


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

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

    1. Александр

      Привет. Пытаюсь пройтись условием по ячейкам.

      http://prntscr.com/te48r4
      Выдает ошибку. Не могу понять почему.

      1. Евгений

        Привет, Александр!
        Необходимо заменить On Error GoTo на On Error Resume Next, тогда работает:

    2. Алексей

      Дополню инфой из справки.

      XlColorIndex Enumeration
      Specifies the color of a selected feature, such as a border, font, or fill.
      Version Information Added: Excel 2007.

      Name Value Description
      xlColorIndexAutomatic -4105 Automatic color
      xlColorIndexNone -4142 No color

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