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 цветов, а также о том, как добавить узор в ячейку.


1 / 1 / 0

Регистрация: 10.12.2011

Сообщений: 7

1

Закрасить ячейки определенным цветом в зависимости от содержимого

26.10.2012, 10:09. Показов 83399. Ответов 23


Студворк — интернет-сервис помощи студентам

Здравствуйте. Я не могу разобраться в создании программы.
Мне нужно в определённом диапазоне: ячейки с текстовым символами — залить красным цветом, ячейки с цифрами — жёлтым цвет, а пустые зелёным.
Нужен код программный.
HELP ME!!!



1



Catstail

Модератор

Эксперт функциональных языков программированияЭксперт Python

34706 / 19227 / 4039

Регистрация: 12.02.2012

Сообщений: 32,183

Записей в блоге: 13

26.10.2012, 10:25

2

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
Sub Fill_Color(Rg as Range)
Dim cel as Range
      For each cel in Rg
           v=cel.Value
           If isEmpty(v) then
              cel.interior.color=Qbcolor(10)
           elseIf isNumeric(v) then
              cel.interior.color=Qbcolor(14)
           else
              cel.interior.color=Qbcolor(12)
           end if
      Next
End Sub



2



1 / 1 / 0

Регистрация: 10.12.2011

Сообщений: 7

26.10.2012, 10:32

 [ТС]

3

Catstail, а можно по-подробнее? Описать каждую строчку) А то ещё сплю на ходу)



0



15136 / 6410 / 1730

Регистрация: 24.09.2011

Сообщений: 9,999

26.10.2012, 10:33

4

Условное форматирование не подойдет?

Вложения

Тип файла: xls УФ.xls (14.0 Кб, 848 просмотров)



0



1 / 1 / 0

Регистрация: 10.12.2011

Сообщений: 7

26.10.2012, 10:40

 [ТС]

5

Цитата
Сообщение от Казанский
Посмотреть сообщение

Условное форматирование не подойдет?

Извините, но нет.

Хотя мб и пойдёт, мне нужен код. Я не давно начал изучать VBA, и поэтому желательно с пояснениями.



0



Catstail

Модератор

Эксперт функциональных языков программированияЭксперт Python

34706 / 19227 / 4039

Регистрация: 12.02.2012

Сообщений: 32,183

Записей в блоге: 13

26.10.2012, 11:57

6

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
Sub Fill_Color(Rg as Range)  ' на вход процедуре подается параметр - диапазон ячеек
Dim cel as Range                ' рабочая переменная (которая будет пробегать по диапазону)
      For each cel in Rg        ' цикл по всем ячейкам диапазона (у ячейки тип - тоже Range)
           v=cel.Value            ' берем значение очередной ячейки
           If isEmpty(v) then                    ' если ячейка пуста -
              cel.interior.color=Qbcolor(10)   ' заливаем зеленым (код 10)
           elseIf isNumeric(v) then             ' если в ячейке число -
              cel.interior.color=Qbcolor(14)   ' заливаем желтым (код 14)
           else                                       ' иначе
              cel.interior.color=Qbcolor(12)   ' заливаем желтым (код 10)
           end if
      Next
End Sub

Вот запускающая процедура:

Visual Basic
1
2
3
4
5
Sub Start()
 
    Fill_Color Range("A1:B5")
 
End Sub



1



Модератор

Эксперт функциональных языков программированияЭксперт Python

34706 / 19227 / 4039

Регистрация: 12.02.2012

Сообщений: 32,183

Записей в блоге: 13

26.10.2012, 12:03

7

Вот и картинка:

Изображения

 



0



Hugo121

6875 / 2807 / 533

Регистрация: 19.10.2012

Сообщений: 8,562

26.10.2012, 13:16

8

Visual Basic
1
2
3
4
5
6
7
Sub tt()
    With Range("A1:B5")
        .SpecialCells(xlCellTypeBlanks).Interior.Color = vbGreen
        .SpecialCells(xlCellTypeConstants, 1).Interior.Color = vbYellow
        .SpecialCells(xlCellTypeConstants, 2).Interior.Color = vbRed
    End With
End Sub

Добавлено через 9 минут
Либо тоже самое короче, но непонятнее:

Visual Basic
1
2
3
4
5
6
7
Sub tt()
    With Range("A1:B5")
        .SpecialCells(4).Interior.Color = vbGreen
        .SpecialCells(2, 1).Interior.Color = vbYellow
        .SpecialCells(2, 2).Interior.Color = vbRed
    End With
End Sub



4



Модератор

Эксперт функциональных языков программированияЭксперт Python

34706 / 19227 / 4039

Регистрация: 12.02.2012

Сообщений: 32,183

Записей в блоге: 13

26.10.2012, 14:39

9

Цитата
Сообщение от Hugo121
Посмотреть сообщение

Либо тоже самое короче, но непонятнее:

— а если числа и строки будут расположены по-другому, Ваш код раскрасит их правильно (в соотв. с заданием TC)?



0



Казанский

15136 / 6410 / 1730

Регистрация: 24.09.2011

Сообщений: 9,999

26.10.2012, 15:35

10

Цитата
Сообщение от Dels
Посмотреть сообщение

— Условное форматирование не подойдет?
— Извините, но нет. Хотя мб и пойдёт, мне нужен код.

Код для применения УФ к выделенному диапазону. Получен правкой кода макрорекордера:

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
Sub Макрос1()
Dim a$
a = ActiveCell.Address(0, 0)
With Selection.FormatConditions
    .Delete
    .Add Type:=xlExpression, Formula1:="=ЕТЕКСТ(" & a & ")"
    .Item(1).Interior.ColorIndex = 3
    .Add Type:=xlExpression, Formula1:="=ЕЧИСЛО(" & a & ")"
    .Item(2).Interior.ColorIndex = 27
    .Add Type:=xlExpression, Formula1:="=" & a & "="""""
    .Item(3).Interior.ColorIndex = 4
End With
End Sub

В файле поста #4 было 2 условия УФ, т.е. ячейки изначально имели зеленый фон. Здесь я добавил зеленую заливку в условие УФ. Теперь ячейки, содержащие значение ошибки (это не число, не текст и не пусто) будут оставаться неокрашенными.

Добавлено через 10 минут

Цитата
Сообщение от Catstail
Посмотреть сообщение

— а если числа и строки будут расположены по-другому, Ваш код раскрасит их правильно (в соотв. с заданием TC)?

Да. С кодом Hugo121 другие проблемы:
1. Надо добавить on error resume next, иначе будет ошибка, если в диапазоне не найдется ячеек указанного типа.
2. Этот метод выбирает только ячейки с константами. Для ячеек с формулами надо дописать такие же команды

Visual Basic
1
2
.SpecialCells(xlCellTypeFormulas, 1).Interior.Color = vbYellow
.SpecialCells(xlCellTypeFormulas, 2).Interior.Color = vbRed



1



1 / 1 / 0

Регистрация: 10.12.2011

Сообщений: 7

30.10.2012, 23:17

 [ТС]

11

Всем доброго времени суток. Не могу понять, что написать для того что бы закрашивались ячейки, в зависимости от содержимого.
Ячейки содержимое которых — цифры нужно закрасить жёлтым цветом.
Ячейки содержимое которых — буквы нужно закрасить синим цветом.
Ячейки у которых нет содержимого(пустые) — нужно закрасить красным цветом.

Приложен файл. Лучше всего писать коды в нём. Заранее благодарю



0



1177 / 419 / 106

Регистрация: 31.03.2012

Сообщений: 1,138

31.10.2012, 10:34

12

А что мешает поставить правильную задачу в соответствии правилами форума, в частности с п. 4.1
Если стандартный поиск по форуму не дал результатов, то даю наВодку, как искать по форуму с помощью гугла на этом или любом другом сайте. В поисковой строке вбиваем: site:сyberforum.ru(пробел)искомый_текст

Цитата
Сообщение от Dels
Посмотреть сообщение

Приложен файл. Лучше всего писать коды в нём.

Куда приложен?, где лучше писАть коды?

Не по теме:

PS. никак не смог избавиться от цитирования cyberforum.ru в качестве ссылки для указания в качестве поисковой строки, потому использовал вместо настоящего пробела — это слово в скобках



0



5468 / 1148 / 50

Регистрация: 15.09.2012

Сообщений: 3,514

31.10.2012, 11:48

13

Никогда не пользуюсь поиском на этом форуме, т.к. невозможно ничего найти.
Всегда использую Гугл или Яндекс. Кстати через Гугл и Яндекс и находятся темы на этом форуме, поэтому считаю, что в названия тем нужно добавлять название языка программирования, например:
Как сделать то-то в VBA.
Просто по правилам форума нельзя указывать название языка программирования в теме, если тема находится в определённом разделе форума, связанном с этим языком программирования.



0



Catstail

Модератор

Эксперт функциональных языков программированияЭксперт Python

34706 / 19227 / 4039

Регистрация: 12.02.2012

Сообщений: 32,183

Записей в блоге: 13

31.10.2012, 12:18

14

Цитата
Сообщение от Казанский
Посмотреть сообщение

Да. С кодом Hugo121 другие проблемы:

Да??? Я про вот этот код:

Visual Basic
1
2
3
4
5
6
7
Sub tt()
    With Range("A1:B5")
        .SpecialCells(4).Interior.Color = vbGreen
        .SpecialCells(2, 1).Interior.Color = vbYellow
        .SpecialCells(2, 2).Interior.Color = vbRed
    End With
End Sub

Хотя, действительно ДА. Я неправ…



0



1 / 1 / 0

Регистрация: 10.12.2011

Сообщений: 7

31.10.2012, 12:44

 [ТС]

15

Вот он(файл)



0



1 / 1 / 0

Регистрация: 03.12.2014

Сообщений: 329

27.05.2015, 13:34

16

Catstail, пожалуйста, можно палитру цветов с кодами (если их много)
Буду очень признательна



0



Модератор

Эксперт функциональных языков программированияЭксперт Python

34706 / 19227 / 4039

Регистрация: 12.02.2012

Сообщений: 32,183

Записей в блоге: 13

27.05.2015, 14:24

17



1



1 / 1 / 0

Регистрация: 03.12.2014

Сообщений: 329

27.05.2015, 14:24

18

Так это же иконки, а мне нужна заливка ячеек



0



3827 / 2254 / 751

Регистрация: 02.11.2012

Сообщений: 5,930

27.05.2015, 14:26

19

Цитата
Сообщение от Оксана33
Посмотреть сообщение

Так это же иконки, а мне нужна заливка ячеек

смотрите лист КОДЫ левее иконок.



0



1 / 1 / 0

Регистрация: 03.12.2014

Сообщений: 329

27.05.2015, 16:27

20

нашла, спасибо. открывала коды-0

Добавлено через 1 час 54 минуты
хочу у вас уточнить, та таблица с цветами не имеет отношение к вышеизложенному коду
cel.interior.color=Qbcolor(12)
так как этот код прописывается colorindex=…
а что это Qbcolor и почему Qb?
кажется я это искала https://msdn.microsoft.com/en-… s.90).aspx



0



IT_Exp

Эксперт

87844 / 49110 / 22898

Регистрация: 17.06.2006

Сообщений: 92,604

27.05.2015, 16:27

20

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

Изменить цвет ячейки при нажатии на ячейку с кодом VBA
Измените выделенный цвет, когда ячейки выбраны с помощью кода VBA
Выделите всю строку и столбец активной ячейки с помощью Kutools for Excel


Изменить цвет ячейки при нажатии на ячейку с кодом VBA

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

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

2. в Microsoft Visual Basic для приложений окна, скопируйте и вставьте приведенный ниже код VBA в Code окно.

VBA: изменить цвет ячейки при нажатии на нее

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
    Target.Interior.Color = vbRed
End Sub
Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)
    Target.Interior.Color = vbGreen
End Sub

3. Нажмите другой + Q клавиши одновременно, чтобы закрыть Microsoft Visual Basic для приложений окно.

Затем, когда вы дважды щелкните ячейку, она будет окрашена в красный цвет. И когда вы щелкаете правой кнопкой мыши по ячейке, она будет окрашена в зеленый цвет. Смотрите скриншот:



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

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

1. Щелкните правой кнопкой мыши вкладку листа, для которой нужно изменить цвет выделения выбранного диапазона, и щелкните Просмотреть код из контекстного меню.

2. в Microsoft Visual Basic для приложений окна, скопируйте и вставьте приведенный ниже код VBA в Code окно.

Код VBA: изменить выделенный цвет выбранного диапазона

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    With Target
        .Worksheet.Cells.FormatConditions.Delete
        .FormatConditions.Add xlExpression, , "TRUE"
        .FormatConditions(1).Interior.Color = vbYellow
    End With
End Sub

3. Нажмите другой + Q ключи одновременно, чтобы закрыть Microsoft Visual Basic для приложений окно.

С этого момента цвет выделенного диапазона или ячейки изменится на желтый. Когда вы щелкаете другую ячейку или диапазон ячеек, ячейки будут раскрашены автоматически.


Выделите всю строку и столбец активной ячейки с помощью Kutools for Excel

Если вы имеете дело с большим листом, необходимо выделить всю строку и столбец активной ячейки, чтобы облегчить чтение. Здесь Макет для чтения полезности Kutools for Excel могу помочь тебе.

1. Нажмите Кутулс > Макет для чтения. Смотрите скриншот:

Когда макет чтения включен, вы можете видеть, что строка и столбец активной ячейки сразу выделяются.

Внимание: Вы можете изменить настройки макета чтения в зависимости от ваших потребностей, как показано на скриншоте ниже.

  Если вы хотите получить бесплатную пробную версию (30-день) этой утилиты, пожалуйста, нажмите, чтобы загрузить это, а затем перейдите к применению операции в соответствии с указанными выше шагами.


Выделите всю строку и столбец активной ячейки с помощью Kutools for 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% и сокращает количество щелчков мышью на сотни каждый день!

офисный дно

Заливка ячейки цветом в 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 цветов можете посмотреть здесь .

As part of a VBA program, I have to set the background colors of certain cells to green, yellow or red, based on their values (basically a health monitor where green is okay, yellow is borderline and red is dangerous).

I know how to set the values of those cells, but how do I set the background color.

asked Dec 13, 2008 at 11:39

paxdiablo's user avatar

paxdiablopaxdiablo

844k233 gold badges1565 silver badges1937 bronze badges

You can use either:

ActiveCell.Interior.ColorIndex = 28

or

ActiveCell.Interior.Color = RGB(255,0,0)

answered Dec 13, 2008 at 11:43

Vinko Vrsalovic's user avatar

Vinko VrsalovicVinko Vrsalovic

328k53 gold badges332 silver badges370 bronze badges

2

This is a perfect example of where you should use the macro recorder. Turn on the recorder and set the color of the cells through the UI. Stop the recorder and review the macro. It will generate a bunch of extraneous code, but it will also show you syntax that works for what you are trying to accomplish. Strip out what you don’t need and modify (if you need to) what’s left.

answered Apr 18, 2012 at 2:34

Jon Crowell's user avatar

Jon CrowellJon Crowell

21.5k14 gold badges88 silver badges110 bronze badges

Do a quick ‘record macro’ to see the color number associated with the color you’re looking for (yellow highlight is 65535). Then erase the code and put

Sub Name()
Selection.Interior.Color = 65535 '(your number may be different depending on the above)
End Sub

answered Mar 4, 2020 at 15:07

Matt G's user avatar

1

or alternatively you could not bother coding for it and use the ‘conditional formatting’ function in Excel which will set the background colour and font colour based on cell value.

There are only two variables here so set the default to yellow and then overwrite when the value is greater than or less than your threshold values.

answered Dec 30, 2008 at 12:34

It doesn’t work if you use Function, but works if you Sub. However, you cannot call a sub from a cell using formula.

answered Mar 22, 2015 at 18:08

user4700453's user avatar

0

Like this post? Please share to your friends:
  • Vba excel как выделить столбец
  • Vba excel как выделить диапазон строк
  • Vba excel как вывести форму
  • Vba excel как вывести на панель
  • Vba excel как вывести массивы