Заливка ячейки цветом в 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
Чтобы можно было присвоить ячейке или диапазону цвет с помощью значений 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 цветов, а также о том, как добавить узор в ячейку.
Non VBA Solution:
Use Conditional Formatting rule with formula: =ISNA(A1)
(to highlight cells with all errors — not only #N/A
, use =ISERROR(A1)
)
VBA Solution:
Your code loops through 50 mln cells. To reduce number of cells, I use .SpecialCells(xlCellTypeFormulas, 16)
and .SpecialCells(xlCellTypeConstants, 16)
to return only cells with errors (note, I’m using If cell.Text = "#N/A" Then
)
Sub ColorCells()
Dim Data As Range, Data2 As Range, cell As Range
Dim currentsheet As Worksheet
Set currentsheet = ActiveWorkbook.Sheets("Comparison")
With currentsheet.Range("A2:AW" & Rows.Count)
.Interior.Color = xlNone
On Error Resume Next
'select only cells with errors
Set Data = .SpecialCells(xlCellTypeFormulas, 16)
Set Data2 = .SpecialCells(xlCellTypeConstants, 16)
On Error GoTo 0
End With
If Not Data2 Is Nothing Then
If Not Data Is Nothing Then
Set Data = Union(Data, Data2)
Else
Set Data = Data2
End If
End If
If Not Data Is Nothing Then
For Each cell In Data
If cell.Text = "#N/A" Then
cell.Interior.ColorIndex = 4
End If
Next
End If
End Sub
Note, to highlight cells witn any error (not only "#N/A"
), replace following code
If Not Data Is Nothing Then
For Each cell In Data
If cell.Text = "#N/A" Then
cell.Interior.ColorIndex = 3
End If
Next
End If
with
If Not Data Is Nothing Then Data.Interior.ColorIndex = 3
UPD: (how to add CF rule through VBA)
Sub test()
With ActiveWorkbook.Sheets("Comparison").Range("A2:AW" & Rows.Count).FormatConditions
.Delete
.Add Type:=xlExpression, Formula1:="=ISNA(A1)"
.Item(1).Interior.ColorIndex = 3
End With
End Sub
In this article, let’s look at the various ways to set or remove the interior/background color of a cell or range – ie to fill the cell. We’ll also have a look at how to fill a cell/range with a pattern. Finally, we’ll review how to get the color input from the user using xlDialogEditColor and working with color gradients.
Example 1: Set the color of a cell / range
The .Interior.Color property is used to set the color of a cell or a range. There are various methods in which we can do this.
'Using XlRgbColor Enumeration - for few cells in a row Range("B2:D2").Interior.Color = rgbDarkGreen 'Using Color Constants - for a cell using row and column number Cells(3, 2).Interior.Color = vbYellow 'Specifying the RGB values - using A1 notation Range("B4").Interior.Color = RGB(255, 0, 0) 'Using Color Code - for few cells in a column Range("B5:B6").Interior.Color = 15773696 'Using Color Index - for a range Range("B7:D8").Interior.ColorIndex = 7
This is how the output will look
For more details, refer to article Excel VBA, Cell Fill Color
Example 2: Set the color of a an entire row
You can use the .Interior.Color property on an entire row. Say you want to highlight all rows where the value of a column satisfies a condition:
Sub highlightRows() Dim rowNo As Integer For rowNo = 3 To 12 If Sheet1.Cells(rowNo, 3).Value < 30 Then Rows(rowNo).Interior.Color = vbRed End If Next End Sub
Here is the Excel before and after executing the code.
Example 3: Set the color of a an entire column
Similar to Example 2, you can fill an entire column using:
'Set color for column Columns(2).Interior.Color = vbCyan
Example 4: Remove the color from a cell / range
You can also remove the background color of a cell by setting it to xlNone
'Remove color Range("A1").Interior.Color = xlNone
or you can set a cell to have automatic color using xlColorIndexAutomatic
'Set color to automatic Range("A1").Interior.ColorIndex = xlColorIndexAutomatic
Example 5: Get the color code of a cell
You can also get the color code of a cell. The line below gets the color code of the color used to fill cell A1 and prints it in cell B1:
'gets the color code used to fill cell A1 Cells(1, 2) = Range("A1").Interior.Color
Example 6: Get the color input from the user using xlDialogEditColor
The xlDialogEditColor is a dialog used to get a color code from the user. This dialog has 2 tabs: Standard and which we will see soon.
Syntax:
intResult = Application.Dialogs(xlDialogEditColor).Show(intIndex, [intRed], [intGreen], [intBlue])
intResult: Zero if the user cancels the dialog and -1 if the user selects a color.
intIndex: Selected color when the edit color dialog is opened. It is also used as an identifier to get the value of the color selected by the user. (More details below).
intRed, intGreen, intBlue: Red, blue and green components of a color
There are 2 methods for calling this dialog:
1. Displaying the standard tab: If only the intIndex is specified and the last 3 parameters are omitted, standard tab will be displayed. intIndex will decide the color index initially selected in the standard tab. This is a number between zero and 56.
intResult = Application.Dialogs(xlDialogEditColor).Show(20)
2. The custom tab is initially displayed. If all the 4 parameters, including the RGB values, are specified, the custom tab will be displayed.
intResult = Application.Dialogs(xlDialogEditColor).Show(20, 100, 100, 200)
So, here is the complete code to get the color code from the user:
Sub changeColor() Dim intResult As Long, intColor As Long 'displays the color dialog intResult = Application.Dialogs(xlDialogEditColor).Show(40, 100, 100, 200) 'gets the color selected by the user intColor = ThisWorkbook.Colors(40) 'changes the fill color of cell A1 Range("A1").Interior.Color = intColor End Sub
Note: The intIndex specified in the xlDialogEditColor (40 in our example) is also the index used by ThisWorkbook.Colors. You need to make sure that these two numbers match.
Example 7: Gradient’s Colors
You can create a gradient using “xlPatternLinearGradient”
Range("A1").Interior.Pattern = xlPatternLinearGradient
It will look like this:
A gradient can have one or more colorStops, and each ColorStop has a position (a value between 0 and 1) and a color property. When you create a gradient, by default, the gradient has two ColorStop objects. One of the color stop objects has the position 1 and the other has the position 2. In order to be able to fully use the gradient properties in VBA, it is best to change the default positions to 0 and 1. In this way we would be able to have additional positions (colorStops) in between (i.e 0.5, 0.3). Let us now look at an example.
Sub multiColorStops() Dim objColorStop As ColorStop Dim lngColor1 As Long 'First create a gradient Range("A1").Interior.Pattern = xlPatternLinearGradient 'Changes orientation to vertical (default is horizontal) - optional Range("A1").Interior.Gradient.Degree = 90 'Clears all previous colorStop objects as they are at position 1 and 2 Range("A1").Interior.Gradient.ColorStops.Clear 'Start creating multiple colorStops at various positions from 0 to 1 Set objColorStop = Range("A1").Interior.Gradient.ColorStops.Add(0) 'Set the color for each colorstop objColorStop.Color = vbYellow Set objColorStop = Range("A1").Interior.Gradient.ColorStops.Add(0.33) objColorStop.Color = vbRed Set objColorStop = Range("A1").Interior.Gradient.ColorStops.Add(0.66) objColorStop.Color = vbGreen Set objColorStop = Range("A1").Interior.Gradient.ColorStops.Add(1) objColorStop.Color = vbBlue End Sub
The final result will look like this.
For more details, please refer to the article Excel VBA, Gradient’s Colors
Example 8: Color Patterns
Using VBA, you can also apply various patterns to cells in Excel. The patterns available can be seen in the snapshot below (Right click on a Cell > Format Cells > Fill tab > Pattern Style):
The pattern of a cell can be changed using the xlPattern enumeration. The code below changes the pattern of cell A1 to the checker pattern:
range("A1").Interior.Pattern = XlPattern.xlPatternChecker
Result:
You can also change the color of the pattern using the code below:
Range("A1").Interior.PatternColor = vbBlue
Result:
You can get a complete list of the XlPattern Enumeration in Excel here.
To get the index (as specified in the link above) of the pattern applied in a cell use:
MsgBox Range("A1").Interior.Pattern
It will display 9 for the checker pattern that we have applied earlier
For more details, refer to the article Excel VBA, Fill Pattern
Содержание
- VBA Excel. Цвет ячейки
- Свойство .Interior.Color объекта Range
- Заливка ячейки цветом в VBA Excel
- Вывод сообщений о числовых значениях цветов
- Использование предопределенных констант
- Цветовая модель RGB
- Свойство .Interior.ColorIndex объекта Range
- VBA RGB
- Excel VBA RGB Color
- Change Color of Cells using VBA RGB Function
- Example #1
- Example #2
- Things to Remember Here
- Recommended Articles
- Change Background Color of Cell Range in Excel VBA
- VBA Reference
- 120+ Project Management Templates
- Description:
- Change Background Color of Cell Range in Excel VBA – Solution(s):
- Change Background Color of Cell Range in Excel VBA – Examples
- Change Background Color of Cell Range in Excel VBA – Download: Example File
- VBA Excel. Цвет ячейки (заливка, фон)
- Свойство .Interior.Color объекта Range
- Заливка ячейки цветом в VBA Excel
- Вывод сообщений о числовых значениях цветов
- Использование предопределенных констант
- Цветовая модель RGB
- Очистка ячейки (диапазона) от заливки
- Свойство .Interior.ColorIndex объекта Range
- 86 комментариев для “VBA Excel. Цвет ячейки (заливка, фон)”
VBA Excel. Цвет ячейки
Заливка ячейки цветом в VBA Excel. Фон ячейки. Свойства .Interior.Color и .Interior.ColorIndex. Цветовая модель RGB. Стандартная палитра из 56 цветов.
- Свойство .Interior.Color объекта Range
- Заливка ячейки цветом в VBA Excel
- Вывод сообщений о числовых значениях цветов
- Использование предопределенных констант
- Цветовая модель RGB
- Свойство .Interior.ColorIndex объекта Range
Свойство .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 | Желтый |
Присваивается цвет ячейке предопределенной константой в VBA Excel точно так же, как и числовым значением:
Пример кода 3:
Цветовая модель RGB
Цветовая система RGB представляет собой комбинацию различных по интенсивности основных трех цветов: красного, зеленого и синего. Они могут принимать значения от 0 до 255. Если все значения равны 0 — это черный цвет, если все значения равны 255 — это белый цвет.
Выбрать цвет и узнать его значения RGB можно с помощью палитры Excel:
Открывается в новом окне Палитра Excel
Чтобы можно было присвоить ячейке или диапазону цвет с помощью значений RGB, их необходимо перевести в десятичное число, обозначающее цвет. Для этого существует функция VBA Excel, которая так и называется — RGB.
Пример кода 4:
Свойство .Interior.ColorIndex объекта Range
До появления Excel 2007 существовала только ограниченная палитра для заливки ячеек фоном, состоявшая из 56 цветов, которая сохранилась и в настоящее время. Каждому цвету в этой палитре присвоен индекс от 1 до 56. Присвоить цвет ячейке по индексу или вывести сообщение о нем можно с помощью свойства .Interior.ColorIndex:
Пример кода 5:
Просмотреть ограниченную палитру для заливки ячеек фоном можно, запустив в VBA Excel простейший макрос:
Источник
VBA RGB
Excel VBA RGB Color
RGB can also be called red, green, and blue. So, one may use this function to get the numerical value of the color value. This function has three components as a named range, and they are red, blue, and green. The other colors are the components of these three different colors in VBA.
In VBA, everything boils down to the coding of every piece. For example, we can use the RANGE object if you want to reference some portion of the worksheet. If you want to change the font color, we can use the NAME property of the range. Then, write the font name that we need but imagine a situation of changing the font color or the cell’s background color. Of course, we can use built-in VB colors like vbGreen, vbBlue, vbRed, etc. But, we have a dedicated function to play around with different colors, i.e., RGB.
Table of contents
You are free to use this image on your website, templates, etc., Please provide us with an attribution link How to Provide Attribution? Article Link to be Hyperlinked
For eg:
Source: VBA RGB (wallstreetmojo.com)
Below is the syntax of the RGB color function.
As you can see above, we can supply three arguments: red, green, and blue. These three parameters can only accept integer numbers ranging from 0 to 255. The result of this function will be the “Long” data type.
Change Color of Cells using VBA RGB Function
Example #1
We have numbers from cells A1 to A8, as shown in the below image.
We will try to change the font color to some random color for this range of cells by using the RGB function.
Start the macro procedure first.
Code:
First, we need to reference the range of cells of fonts we want to change the color of. In this case, our range of cells is A1 to A8, so supply the same using the RANGE object.
Code:
Put a dot to see the IntelliSense list of RANGE objects. From the IntelliSense list, we are trying to change the font color, so choose the FONT property from the list.
Code:
Once we chose the FONT property in this property, we tried to change the color, so we chose the color property of the FONT.
Code:
Put an equal sign and open the RGB function.
Code:
Give random integer numbers ranging from 0 to 255 for all three arguments of the RGB function.
Code:
Now, run the code and see the result of font colors of the cells from A1 to A8.
Output:
So, the colors of the font changed from black to some other. The color depends on the numbers we give to the RGB function.
Below are RGB color codes to get some of the common colors.
You can just change the integer number combination from 0 to 255 to get the different sorts of colors.
Example #2
For the same range of cells, let us see how to change the background color of these cells.
First, supply the range of cells by using the RANGE object.
Code:
This time we are changing the background color of the mentioned cells, so we have nothing to do with the FONT property. Now, choose the “Interior” property of the RANGE object to change the background color.
Code:
Once the “Interior” property is selected, a dot to see the properties and methods of this “Interior” property.
Code:
Since we are changing the interior color of the mentioned cells, choose the “Color” property.
Code:
Set the interior color property of the range of cells (A1 to A8) out the equal sign and open the RGB function.
Code:
Enter the random number as you want.
Code:
Run the code and see the background color.
Output:
The background color has changed.
Things to Remember Here
- RGB stands for Red, Green, and Blue.
- A combination of these three colors will give different colors.
- All these three parameters can accept integer values between 0 to 255 only. It will reset any numbers above this to 255.
Recommended Articles
This article has been a guide to VBA RGB. Here, we discuss changing the color of the interior cell (background, font) in Excel VBA by putting different integer numbers in the RGB function with examples and a downloadable Excel template. Below are some useful Excel articles related to VBA: –
Источник
Change Background Color of Cell Range in Excel VBA
VBA Reference
Effortlessly
Manage Your Projects
120+ Project Management Templates
Seamlessly manage your projects with our powerful & multi-purpose templates for project management.
120+ PM Templates Includes:
50+ Excel Templates
50+ PowerPoint Templates
25+ Word Templates
A Powerful & Multi-purpose Templates for project management. Now seamlessly manage your projects, tasks, meetings, presentations, teams, customers, stakeholders and time. This page describes all the amazing new features and options that come with our premium templates.
Save Up to 85% LIMITED TIME OFFER
All-in-One Pack
120+ Project Management Templates
Essential Pack
50+ Project Management Templates
Excel Pack
50+ Excel PM Templates
PowerPoint Pack
50+ Excel PM Templates
MS Word Pack
25+ Word PM Templates
Ultimate Project Management Template
Ultimate Resource Management Template
Project Portfolio Management Templates
Description:
It is an interesting feature in excel, we can change background color of Cell, Range in Excel VBA. Specially, while preparing reports or dashboards, we change the backgrounds to make it clean and get the professional look to our projects.
Change Background Color of Cell Range in Excel VBA – Solution(s):
We can use Interior.Color OR Interior.ColorIndex properties of a Rage/Cell to change the background colors.
Change Background Color of Cell Range in Excel VBA – Examples
The following examples will show you how to change the background or interior color in Excel using VBA.
Example 1
In this Example below I am changing the Range B3 Background Color using Cell Object
Example 2
In this Example below I am changing the Range B3 Background Color using Range Object
Example 3
We can also use RGB color format, instead of ColorIndex. See the following example:
Example 4
The following example will apply all the colorIndex form 1 to 55 in Activesheet.
Instructions:
- Open an excel workbook
- Press Alt+F11 to open VBA Editor
- Insert a new module from Insert menu
- Copy the above code and Paste in the code window
- Save the file as macro enabled workbook
- Press F5 to execute the procedure
- You can see the interior colors are changing as per our code
Change Background Color of Cell Range in Excel VBA – Download: Example File
Here is the sample screen-shot of the example file.
Download the file and explore how to change the interior or background colors in Excel using VBA.
A Powerful & Multi-purpose Templates for project management. Now seamlessly manage your projects, tasks, meetings, presentations, teams, customers, stakeholders and time. This page describes all the amazing new features and options that come with our premium templates.
Источник
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:
Чтобы можно было присвоить ячейке или диапазону цвет с помощью значений 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 цветов, а также о том, как добавить узор в ячейку.
86 комментариев для “VBA Excel. Цвет ячейки (заливка, фон)”
Спасибо, наконец то разобрался во всех перипетиях заливки и цвета шрифта.
Пожалуйста, Виктор. Очень рад, что статья пригодилась.
как проверить наличие фона?
Привет, Надежда!
Фон у ячейки есть всегда, по умолчанию — белый. Отсутствие цветного фона можно определить, проверив, является ли цвет ячейки белым:
Подскажите пожалуйста, как можно посчитать количество залитых определенным цветом ячеек в таблице?
Привет, Иван!
Посчитать ячейки с одинаковым фоном можно с помощью цикла.
Для реализации этого примера сначала выбираем в таблице ячейку с нужным цветом заливки. Затем запускаем код, который определяет цветовой индекс фона активной ячейки, диапазон таблицы вокруг нее и общее количество ячеек с такой заливкой в таблице.
Каким образом можно использовать не в процедуре, а именно в пользовательской функции VBA свойство .Interior.Color?
Скажем, проверять функцией значение какой-то ячейки и подкрашивать ячейку в зависимости от этого.
Фарин, пользовательская функция VBA предназначена только для возврата вычисленного значения в ячейку, в которой она расположена. Она не позволяет внутри себя менять формат своей ячейки, а также значения и форматы других ячеек.
Однако, с помощью пользовательской функции VBA можно вывести значения свойств ячейки, в которой она размещена:
В сети есть эксперименты по изменению значений других ячеек из пользовательской функции VBA, но они могут работать нестабильно и приводить к ошибкам.
Для подкрашивания ячейки в зависимости от ее значения используйте процедуру Sub или штатный инструмент Excel – условное форматирование.
а как можно закрасить только пустые ячейки ?
Лев, закрасить пустые ячейки можно с помощью цикла For Each… Next:
Евгений, спасибо за ссылку на интересный прием.
Евгений, день добрый.
Подскажите пожалуйста, как назначить ячейке цвет через значение RGB, которое в ней записано. Или цвет другой ячейки.
Привет, Александр!
Используйте функцию InStr, чтобы найти положение разделителей, а дальше функции Left и Mid. Смотрите пример с пробелом в качестве разделителя:
Или еще проще с помощью функции Split:
Добрый день!
подскажите, пожалуйста, как можно выводить из таблицы (150 столбцов х 150 строк) адрес ячеек (списком), если они имеют заливку определенного цвета.
Заранее спасибо!
Привет, Валентина!
Используйте два цикла For…Next. Определить числовой код цвета можно с помощью выделения одной из ячеек с нужным цветом.
столбец «D» имеет разноцветную заливку
надо справа от зеленой ячейки написать «Да»
Каким-то образом надо узнать числовое значение цвета, если он не стандартный — vbGreen. Например, можно выделить ячейку с нужным цветом и записать числовое значение цвета в переменную:
Евгений, спасибо за подсказку.
Все получилось
добрый день! подскажите, пожалуйста, как сделать, чтобы результаты выводились на отдельный лист ?
заранее спасибо!
Валентина, замените в коде имя «Лист2» на имя своего листа.
Евгений. Долгое время мучаюсь реализацией следующего сценария: в таблице Excel, которая является базой данных пациентов отделения есть столбец «G» в котором лаборанты отмечают исследования выполненные с контрастом «(С+)» и без «(C-)» и далее в столбце «N» они отмечаются количество использованного контраста «от 50мл до 200мл»; для удобства ввода и уменьшения числа непреднамеренных ошибок в столбцах реализована функция проверки данных что бы сотрудники могли выбирать уже готовые значения из списка и если ошибутся то выскочит ошибка; тем не менее сотрудники умудряются при заполнении таблицы не вносить количество использованного контраста. Вопрос заключается в том, как подкрасить ячейку для ввода количества контраста красным цветом при условии, что в ячейке столбца G фигурирует (С+) с целью акцентировать на этом внимание.
Заранее спасибо за ответ.
Добрый день, Алексей!
Примените условное форматирование:
1 Выберите столбец «N».
2 На вкладке ленты «Главная» перейдите по ссылкам «Условное форматирование» «Создать правило».
3 В открывшемся окне выберите тип правила: «Использовать формулу для определения форматируемых ячеек».
4 В строку формул вставьте =И(ЕСЛИ(G1=»(C+)»;1);ЕСЛИ(N1=»»;1)) . Буква «C» должна быть из одной раскладки (ENG или РУС) в формуле и в ячейке.
5 Нажмите кнопку «Формат» и на вкладке «Заливка» выберите красный цвет.
6 Закройте все окна, нажимая «OK».
Если в ячейке столбца «G» будет выбрано «(С+)», то ячейка той же строки в столбце «N» подкрасится красным цветом. После ввода значения в ячейку столбца «N», ее цвет изменится на первоначальный.
Спасибо Евгений! Ваш пример многое прояснил (в т.ч надо читать Уокенбаха и не филонить). Мне удалось заставить работать этот сценарий не так изящно как у Вас т.е создал для каждой отдельной переменной свое правило: пр. для ГМ. (С+) —> =ЕСЛИ(И(G5066=»ГМ. (С+)»;N5066=»»);»Истина»;»Ложь»)
МТ. (С+) —> =ЕСЛИ(И(G5066=»МТ. (С+)»;N5066=»»);»Истина»;»Ложь») и т.д всего 8 правил для каждого конкретного случая.
И применил их всех для столбца N:N
Ячейку G взял произвольно и в дальнейшем вообще убрал ее на лист метаданных (диапазоны переменных типа ГМ. (С+), МТ. (С+)…)
Еще раз благодарю за помощь! а есть возможность тоже самое сделать цикличным скриптом VBA ? (или я сморозил…).
Заранее спасибо за ответ.
Источник
VBA Code To Change Cell Color
Excel supports more than 16 million colors in a cell; hence you should know how to set the exact color in a cell. To do this, you can use RGB (Red, Green, Blue) function in VBA to set the color of a cell. The function requires 3 numbers from 0 to 255 [e.g. RGB(234,232,98)]. Below is a practice code that changes cell colors to Green, Red and Blue.
Change a Cells Background Color
'This function can be used to change the color of a
cell
Public Sub ChangeCellColor()
'
'Change cell color to green
Sheet1.Range("C4").Interior.Color = RGB(0, 255, 0)
'
'Change cell color to red
Sheet1.Range("C5").Interior.Color = RGB(255, 0, 0)
'
'Change cell color to blue
Sheet1.Range("C6").Interior.Color = RGB(0, 0, 255)
'
End Sub
VBA Code To Change Cell Color ,follow below steps:
Open an Excel file
- Press Alt+F11
- Insert a Module (Insert>Module) from menu bar
- Paste the code in the module
- Now add a shape in Excel sheet
- Give a name to the shape like ‘Change Cell Color’
- Right click on the shape and select ‘Assign Macro…’
- Select ‘ChangeCellColor’ from the list and click on ‘Ok’ button
- Done, click on the shape to change the cell colors
Download Practice File
You can also practice this through our practice files. Click on the below link to download the practice file.
Recommended Articles
- VBA to Read Excel Data using Connection String
- Excel VBA Tool to Get File Properties
- VBA Code to Re-link MS Access Link Tables
- VBA Code to List Files in Folder
- VBA Code to Check if File Exist in Folder
Excel VBA Course : Beginners to Advanced
We are offering Excel VBA Course for Beginners to Experts at discounted prices. The courses includes On Demand Videos, Practice Assignments, Q&A Support from our Experts. Also after successfully completion of the certification, will share the success with Certificate of Completion
This course is going to help you to excel your skills in Excel VBA with our real time case studies.
Lets get connected and start learning now. Click here to Enroll.
Secrets of Excel Data Visualization: Beginners to Advanced Course
Here is another best rated Excel Charts and Graph Course from ExcelSirJi. This courses also includes On Demand Videos, Practice Assignments, Q&A Support from our Experts.
This Course will enable you to become Excel Data Visualization Expert as it consists many charts preparation method which you will not find over the internet.
So Enroll now to become expert in Excel Data Visualization. Click here to Enroll.
Applies to: Microsoft Excel 365, 2021, 2019, 2016.
In today’s VBA for Excel Automation tutorial we’ll learn about how we can programmatically change the color of a cell based on the cell value.
We can use this technique when developing a dashboard spreadsheet for example.
Step #1: Prepare your spreadsheet
If you are not yet developing on Excel, we’d recommend to look into our introductory guide to Excel Macros. You also need to make sure that the Developer tab is available in your Microsoft Excel Ribbon, as you’ll use it to write some simple code.
- Open Microsoft Excel. Note that code provided in this tutorial is expected to function in Excel 2007 and beyond.
- In an empty worksheet, add the following table :
- Now go ahead and define a named Range by hitting: Formulas>>Define Name
- Hit OK
Step #2: Changing cell interior color based on value with Cell.Interior.Color
- Hit the Developer entry in the Ribbon.
- Hit Visual Basic or Alt+F11 to open your developer VBA editor.
- Next highlight the Worksheet in which you would like to run your code. Alternatively, select a module that has your VBA code.
- Go ahead and paste this code. In our example we’ll modify the interior color of a range of cells to specific cell RGB values corresponding to the red, yellow and green colors.
- Specifically we use the Excel VBA method Cell.Interior.Color and pass the corresponding RGB value or color index.
Sub Color_Cell_Condition()
Dim MyCell As Range
Dim StatValue As String
Dim StatusRange As Range
Set StatusRange = Range("Status")
For Each MyCell In StatusRange
StatValue = MyCell.Value
Select Case StatValue
Case "Progressing"
MyCell.Interior.Color = RGB(0, 255, 0)
Case "Pending Feedback"
MyCell.Interior.Color = RGB(255, 255, 0)
Case "Stuck"
MyCell.Interior.Color = RGB(255, 0, 0)
End Select
Next MyCell
End Sub
- Run your code – either by pressing on F5 or Run>> Run Sub / UserForm.
- You’ll notice the status dashboard was filled as shown below:
- Save your code and close your VBA editor.
Change Background Color of Cell Range in Excel VBA
Description:
It is an interesting feature in excel, we can change background color of Cell, Range in Excel VBA. Specially, while preparing reports or dashboards, we change the backgrounds to make it clean and get the professional look to our projects.
Change Background Color of Cell Range in Excel VBA – Solution(s):
We can use Interior.Color OR Interior.ColorIndex properties of a Rage/Cell to change the background colors.
Change Background Color of Cell Range in Excel VBA – Examples
The following examples will show you how to change the background or interior color in Excel using VBA.
Example 1
In this Example below I am changing the Range B3 Background Color using Cell Object
Sub sbRangeFillColorExample1() 'Using Cell Object Cells(3, 2).Interior.ColorIndex = 5 ' 5 indicates Blue Color End Sub
Example 2
In this Example below I am changing the Range B3 Background Color using Range Object
Sub sbRangeFillColorExample2() 'Using Range Object Range("B3").Interior.ColorIndex = 5 End Sub
Example 3
We can also use RGB color format, instead of ColorIndex. See the following example:
Sub sbRangeFillColorExample3() 'Using Cell Object Cells(3, 2).Interior.Color = RGB(0, 0, 250) 'Using Range Object Range("B3").Interior.Color = RGB(0, 0, 250) End Sub
Example 4
The following example will apply all the colorIndex form 1 to 55 in Activesheet.
Sub sbPrintColorIndexColors() Dim iCntr For iCntr = 1 To 56 Cells(iCntr, 1).Interior.ColorIndex = iCntr Cells(iCntr, 1) = iCntr Next iCntr End Sub
Instructions:
- Open an excel workbook
- Press Alt+F11 to open VBA Editor
- Insert a new module from Insert menu
- Copy the above code and Paste in the code window
- Save the file as macro enabled workbook
- Press F5 to execute the procedure
- You can see the interior colors are changing as per our code
Change Background Color of Cell Range in Excel VBA – Download: Example File
Here is the sample screen-shot of the example file.
Download the file and explore how to change the interior or background colors in Excel using VBA.
ANALYSIS TABS – ColorIndex
A Powerful & Multi-purpose Templates for project management. Now seamlessly manage your projects, tasks, meetings, presentations, teams, customers, stakeholders and time. This page describes all the amazing new features and options that come with our premium templates.
Save Up to 85% LIMITED TIME OFFER
All-in-One Pack
120+ Project Management Templates
Essential Pack
50+ Project Management Templates
Excel Pack
50+ Excel PM Templates
PowerPoint Pack
50+ Excel PM Templates
MS Word Pack
25+ Word PM Templates
Ultimate Project Management Template
Ultimate Resource Management Template
Project Portfolio Management Templates
Related Posts
VBA Reference
Effortlessly
Manage Your Projects
120+ Project Management Templates
Seamlessly manage your projects with our powerful & multi-purpose templates for project management.
120+ PM Templates Includes:
3 Comments
-
Harbinder Singh
April 13, 2017 at 12:23 PM — Replyneed help in excel
In company there are 10000 employee and all having duty in A shift, B shift, C shift. Each shift of 08 hrs
i have to find those employee who work continuous 10 days or more then 10 days
please help me to find the solution using VB macro in excel or any other way to find from huge no of data in excel
Kindly provide me the solution.
-
RandomOne
May 23, 2017 at 5:46 AM — ReplyHarbinder Singh
its dependes of your database, can check with a vba code for filter based on the criteria, select the range and then color it,
Regards! -
Ken Schleede
July 10, 2019 at 6:44 AM — ReplyThanks! This is excellent. It allows me to control the colors much more reliably than conditional formatting.
Effectively Manage Your
Projects and Resources
ANALYSISTABS.COM provides free and premium project management tools, templates and dashboards for effectively managing the projects and analyzing the data.
We’re a crew of professionals expertise in Excel VBA, Business Analysis, Project Management. We’re Sharing our map to Project success with innovative tools, templates, tutorials and tips.
Project Management
Excel VBA
Download Free Excel 2007, 2010, 2013 Add-in for Creating Innovative Dashboards, Tools for Data Mining, Analysis, Visualization. Learn VBA for MS Excel, Word, PowerPoint, Access, Outlook to develop applications for retail, insurance, banking, finance, telecom, healthcare domains.
Page load link
Go to Top
Return to VBA Code Examples
Change Color of Cell – .Interior.ColorIndex
To change the colour of a cell we can use:
Cell.Interior.ColorIndex = Num
Where:
• Cell is the cell reference
• Interior – refers to the colour of the actual cell colour (The interior property)
• Colourindex is a value between 1 and 56 for one of Excel’s 56 predefined colours
And Num is the number colour assigned to the cell. However, it isn’t always easy to remember which number represents which colour. The following subroutine changes the cell colour based on the row number. So for example row 3 will have colour 3 etc.
As there are 56 preset colours in Excel, this means that cells 59, 115 will have the same colour as the cell in row 3:
Option Explicit
Private Sub CommandButton1_Click()
Colour_Range (Sheets("Sheet2").Range("A1:A2000"))
End Sub
Sub Colour_Range(Cell_Range As Range)
' Will Colour each cell in range
Dim Cell
For Each Cell In Cell_Range
Cell.Interior.ColorIndex = Cell.Row Mod 56
Cell.Offset(0, 0).Value = Cell.Row
Next
End Sub
The routine is activated by a click event.
To download the .XLSM file for this tutorial, please click here.
VBA Coding Made Easy
Stop searching for VBA code online. Learn more about AutoMacro – A VBA Code Builder that allows beginners to code procedures from scratch with minimal coding knowledge and with many time-saving features for all users!
Learn More!
<<Return to VBA Examples
Excel VBA RGB Color
RGB can also be called red, green, and blue. So, one may use this function to get the numerical value of the color value. This function has three components as a named range, and they are red, blue, and green. The other colors are the components of these three different colors in VBA.
In VBA, everything boils down to the coding of every piece. For example, we can use the RANGE object if you want to reference some portion of the worksheet. If you want to change the font color, we can use the NAME property of the range. Then, write the font name that we need but imagine a situation of changing the font color or the cell’s background color. Of course, we can use built-in VB colors like vbGreen, vbBlue, vbRed, etc. But, we have a dedicated function to play around with different colors, i.e., RGB.
Table of contents
- Excel VBA RGB Color
- Change Color of Cells using VBA RGB Function
- Example #1
- Example #2
- Things to Remember Here
- Recommended Articles
- Change Color of Cells using VBA RGB Function
Below is the syntax of the RGB color function.
As you can see above, we can supply three arguments: red, green, and blue. These three parameters can only accept integer numbers ranging from 0 to 255. The result of this function will be the “Long” data type.
Change Color of Cells using VBA RGB Function
You can download this VBA RGB Excel Template here – VBA RGB Excel Template
Example #1
We have numbers from cells A1 to A8, as shown in the below image.
We will try to change the font color to some random color for this range of cells by using the RGB function.
Start the macro procedure first.
Code:
Sub RGB_Example1() End Sub
First, we need to reference the range of cells of fonts we want to change the color of. In this case, our range of cells is A1 to A8, so supply the same using the RANGE object.
Code:
Sub RGB_Example1() Range ("A1:A8") End Sub
Put a dot to see the IntelliSense list of RANGE objects. From the IntelliSense list, we are trying to change the font color, so choose the FONT property from the list.
Code:
Sub RGB_Example1() Range("A1:A8").Font End Sub
Once we chose the FONT property in this property, we tried to change the color, so we chose the color property of the FONT.
Code:
Sub RGB_Example1() Range("A1:A8").Font.Color End Sub
Put an equal sign and open the RGB function.
Code:
Sub RGB_Example1() Range("A1:A8").Font.Color = RGB( End Sub
Give random integer numbers ranging from 0 to 255 for all three arguments of the RGB function.
Code:
Sub RGB_Example1() Range("A1:A8").Font.Color = RGB(300, 300, 300) End Sub
Now, run the code and see the result of font colors of the cells from A1 to A8.
Output:
So, the colors of the font changed from black to some other. The color depends on the numbers we give to the RGB function.
Below are RGB color codes to get some of the common colors.
You can just change the integer number combination from 0 to 255 to get the different sorts of colors.
Example #2
For the same range of cells, let us see how to change the background color of these cells.
First, supply the range of cells by using the RANGE object.
Code:
Sub RGB_Example2() Range ("A1:A8"). End Sub
This time we are changing the background color of the mentioned cells, so we have nothing to do with the FONT property. Now, choose the “Interior” property of the RANGE object to change the background color.
Code:
Sub RGB_Example2() Range("A1:A8").Interior End Sub
Once the “Interior” property is selected, a dot to see the properties and methods of this “Interior” property.
Code:
Sub RGB_Example2() Range("A1:A8").Interior. End Sub
Since we are changing the interior color of the mentioned cells, choose the “Color” property.
Code:
Sub RGB_Example2() Range("A1:A8").Interior.Color End Sub
Set the interior color property of the range of cells (A1 to A8) out the equal sign and open the RGB function.
Code:
Sub RGB_Example2() Range("A1:A8").Interior.Color = RGB( End Sub
Enter the random number as you want.
Code:
Sub RGB_Example2() Range("A1:A8").Interior.Color = RGB(0, 255, 255) End Sub
Run the code and see the background color.
Output:
The background color has changed.
Things to Remember Here
- RGB stands for Red, Green, and Blue.
- A combination of these three colors will give different colors.
- All these three parameters can accept integer values between 0 to 255 only. It will reset any numbers above this to 255.
Recommended Articles
This article has been a guide to VBA RGB. Here, we discuss changing the color of the interior cell (background, font) in Excel VBA by putting different integer numbers in the RGB function with examples and a downloadable Excel template. Below are some useful Excel articles related to VBA: –
- VBA Font Color
- Excel VBA Web Scraping
- Color Index in VBA
- Class in VBA
- VBA MsgBox (Yes/No)