Заливка ячейки цветом в 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 цветов, а также о том, как добавить узор в ячейку.
Excel VBA ColorIndex
VBA ColorIndex Property of Excel VBA is very useful to set the fill colors, border colors and font colors. Excel VBA ColorIndex returns index values from 1 to 56, -4105 and -4142. You can set the default colors using VBA enumeration number -4105 ( or xlColorIndexAutomatic). We can set VBA colorIndex -4142 (or xlColorIndexNone) enumeration to clear the colors or set to no colors.
Syntax of Excel VBA ColorIndex
Here is the syntax of ColorIndex property of Excel VBA. You can set or return the color index value of the Excel Objects using the following VBA colorindex syntax.
expression.ColorIndex
Excel VBA Syntax to get the ColorIndex Value of the Excel Font, Interior or Border Color and store it in a Variable:
dblColorValue= expression.ColorIndex
Syntax to set the ColorIndex Value in Excel VBA to Excel Color Objects using Excel ColorIndex value:
expression.ColorIndex= IndexValue (1 to 56,-4105 or -4142)
ColorIndex in Excel VBA
Here are the list of Excel VBA ColorIndex Values and respective Colors:
ColorIndex | Excel VBA Color | ColorIndex | Excel VBA Color |
---|---|---|---|
1 | RGB(0,0,0) | 29 | RGB(128,0,128) |
2 | RGB(255,255,255) | 30 | RGB(128,0,0) |
3 | RGB(255,0,0) | 31 | RGB(0,128,128) |
4 | RGB(0,255,0) | 32 | RGB(0,0,255) |
5 | RGB(0,0,255) | 33 | RGB(0,204,255) |
6 | RGB(255,255,0) | 34 | RGB(204,255,255) |
7 | RGB(255,0,255) | 35 | RGB(204,255,204) |
8 | RGB(0,255,255) | 36 | RGB(255,255,153) |
9 | RGB(128,0,0) | 37 | RGB(153,204,255) |
10 | RGB(0,128,0) | 38 | RGB(255,153,204) |
11 | RGB(0,0,128) | 39 | RGB(204,153,255) |
12 | RGB(128,128,0) | 40 | RGB(255,204,153) |
13 | RGB(128,0,128) | 41 | RGB(51,102,255) |
14 | RGB(0,128,128) | 42 | RGB(51,204,204) |
15 | RGB(192,192,192) | 43 | RGB(153,204,0) |
16 | RGB(128,128,128) | 44 | RGB(255,204,0) |
17 | RGB(153,153,255) | 45 | RGB(255,153,0) |
18 | RGB(153,51,102) | 46 | RGB(255,102,0) |
19 | RGB(255,255,204) | 47 | RGB(102,102,153) |
20 | RGB(204,255,255) | 48 | RGB(150,150,150) |
21 | RGB(102,0,102) | 49 | RGB(0,51,102) |
22 | RGB(255,128,128) | 50 | RGB(51,153,102) |
23 | RGB(0,102,204) | 51 | RGB(0,51,0) |
24 | RGB(204,204,255) | 52 | RGB(51,51,0) |
25 | RGB(0,0,128) | 53 | RGB(153,51,0) |
26 | RGB(255,0,255) | 54 | RGB(153,51,102) |
27 | RGB(255,255,0) | 55 | RGB(51,51,153) |
28 | RGB(0,255,255) | 56 | RGB(51,51,51) |
VBA to Print ColorIndex Table
Here is the Excel VBA Macro to print Excel ColorIndex Values and respective colors in Excel Sheet.
Sub sbExcel_VBA_PrintColorIndex() rowCntr = 2 colCntr = 2 For iCntr = 1 To 56 Cells(rowCntr, colCntr).Interior.ColorIndex = iCntr Cells(rowCntr, colCntr) = iCntr If iCntr > 1 And iCntr Mod 14 = 0 Then colCntr = colCntr + 1 rowCntr = 2 Else rowCntr = rowCntr + 1 End If Next End Sub
Set ColorIndex in Excel VBA
Here are the list of Excel VBA code to set ColorIndex to a Range of cells in Microsoft Excel Sheet.
Font Colors in Excel VBA
We can set the font colors in Excel VBA using ColorIndex property of Font Object. Here is the simple excel vba font color macro to set the font color of a given range A1:E20.
Sub SetFontColorIndex_Range() Range("A1:E20").Font.ColorIndex = 40 End Sub
You can also get the fornt colors using ColorIndex and store it in a variable. Please check the below code snippet:
myVar=Range("A1").Font.ColorIndex
This will return the font color and assign to a variable.
Interior Colors in Excel VBA
We can change the Interior or fill colors of a range using Excel VBA ColorIndex Property. Excel Interior Color macro heps you to change the interior color of an obect.
Sub SetInteriorColorIndex_Range() Range("A1:E20").Interior.ColorIndex = 41 End Sub
You can get Cell colors using Excel VBA, here is the get cell color excel vba macro to get the cell background colors.
myVar=Range("A1:E20").Interior.ColorIndex
Border Colors in Excel VBA
ColorIndex property of Borders is very easy to set the border colors in Excel VBA. Here is
Sub SetBordersColorIndex_Range() Range("A1:E20").Borders.ColorIndex = 42 End Sub
Clear Colors in Excel VBA
Some times we need to fill no colors in Excel, we can clear the Excel Object colors such as font, border and fill colors and set to automatic or no fill color. Here are example macro to clear the color and fill no colors.
Clear Background Color in Excel VBA
We often required to clear the background or fill color of the excel object. We can use the following Excel Macro to clear the background colors and set no interior colors.
Sub SetClearBackgroundColor_ColorIndex_Range() Range("A1:E20").Interior.ColorIndex = -4142 End Sub
The above macro will set the Interior.ColorIndex to -4142 enumeration. Interior.ColorIndex = -4142 is enumeration to clear the background or fill color.
Similarly, we can clear the boder colors using Excel VBA as shown below:
Sub SetClearBorders_ColorIndex_Range() Range("A1:E20").Borders.ColorIndex = -4142 End Sub
We can set the font colors to default or automatic colors using Excel VBA ColorIndex property of Font object. Here is an example:
Sub SetClearFontColorIndex_Range() Range("A1:E20").Font.ColorIndex = -4105 End Sub
VBA Colors
We can set the colors in VBA using many approaches. We use ColorIndex Property, VBA Color Constants or set RGB Colors. We have already seen how to use ColorIndex in Excel VBA. Let us see the Excel VBA Color Constants and RGB Colors.
Excel VBA Color Constants
We can use the VBA Color Constants to set the colors of Excel Objects. Here is an easy to understand example:
Sub sbExcel_VBA_ColorConstants() Cells(2, 4).Interior.Color = vbBlack Cells(3, 4).Interior.Color = vbRed Cells(4, 4).Interior.Color = vbGreen Cells(5, 4).Interior.Color = vbYellow Cells(6, 4).Interior.Color = vbBlue Cells(7, 4).Interior.Color = vbMagenta Cells(8, 4).Interior.Color = vbCyan Cells(9, 4).Interior.Color = vbWhite End Sub
VBA Color Constant | VALUE | Excel VBA Color & RGB |
---|---|---|
vbBlack | 0x0 | RGB(0,0,0) |
vbRed | 0xFF | RGB(255,0,0) |
vbGreen | 0xFF00 | RGB(0,255,0) |
vbYellow | 0xFFFF | RGB(255,255,0) |
vbBlue | 0xFF0000 | RGB(0,0,255) |
vbMagenta | 0xFF00FF | RGB(255,0,255) |
vbCyan | 0xFFFF00 | RGB(0,255,255) |
vbWhite | 0xFFFFFF | RGB(255,255,255) |
RGB Colors in Excel VBA
We have only few color codes when we use Constants or ColorIndex Property. RGB helps us to use all possible combination of colors with Red, Green and Blue. Here is a simple Excel macro to explain the RGB in VBA.
Sub ChangeBackgourdColorRGB_Range() Range("A1:E20").Interior.Color = rgb(125, 205, 99) End Sub
RGB color can be any number between 0 and 255. Here are the list of RGB colors for Excel VBA ColorIndex color codes:
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
- Syntax of Excel VBA ColorIndex
- ColorIndex in Excel VBA
- VBA to Print ColorIndex Table
- Set ColorIndex in Excel VBA
- Font Colors in Excel VBA
- Interior Colors in Excel VBA
- Border Colors in Excel VBA
- Clear Colors in Excel VBA
- Clear Background Color in Excel VBA
- VBA Colors
- Excel VBA Color Constants
- RGB Colors 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:
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
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
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♦Vinko 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 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
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
0
Содержание
- Interior.Color property (Excel)
- Syntax
- Remarks
- Example
- Support and feedback
- ColorIndex property (Excel Graph)
- Syntax
- Remarks
- Example
- Support and feedback
- VBA RGB
- Excel VBA RGB Color
- Change Color of Cells using VBA RGB Function
- Example #1
- Example #2
- Things to Remember Here
- Recommended Articles
- VBA Excel ColorIndex Property
- What does VBA Excel ColorIndex Property do?
- Syntax of VBA Excel ColorIndex Property
- Example of VBA Excel ColorIndex Property
- Example – Find the first colored Cell using ColorIndex Property
- Question
- Answer
- Remarks
- Excel VBA ColorIndex
- VBA Reference
- 120+ Project Management Templates
- Syntax of Excel VBA ColorIndex
- ColorIndex in Excel VBA
- VBA to Print ColorIndex Table
- Set ColorIndex in Excel VBA
- Font Colors in Excel VBA
- Interior Colors in Excel VBA
- Border Colors in Excel VBA
- Clear Colors in Excel VBA
- Clear Background Color in Excel VBA
- VBA Colors
- Excel VBA Color Constants
- RGB Colors in Excel VBA
Interior.Color property (Excel)
Returns or sets the primary color of the object, as shown in the table in the remarks section. Use the RGB function to create a color value. Read/write Variant.
Syntax
expression.Color
expression An expression that returns an Interior object.
Object | Color |
---|---|
Border | The color of the border. |
Borders | The color of all four borders of a range. If they’re not all the same color, Color returns 0 (zero). |
Font | The color of the font. |
Interior | The cell shading color or the drawing object fill color. |
Tab | The color of the tab. |
Example
This example sets the color of the tick-mark labels on the value axis on Chart1.
Support and feedback
Have questions or feedback about Office VBA or this documentation? Please see Office VBA support and feedback for guidance about the ways you can receive support and provide feedback.
Источник
ColorIndex property (Excel Graph)
Returns or sets the color of the border, font, or interior, as shown in the following table. The color is specified as an index value into the current color palette, or as one of the following XlColorIndex constants: xlColorIndexAutomatic or xlColorIndexNone. Read/write Variant.
Syntax
expression.ColorIndex
expression Required. An expression that returns one of the objects in the Applies To list.
Object | Description |
---|---|
Border | The color of the border. |
Font | The color of the font. |
Interior | The color of the interior fill. Set ColorIndex to xlColorIndexNone to specify that you don’t want an interior fill. Set ColorIndex to xlColorIndexAutomatic to specify the automatic fill (for drawing objects). |
This property specifies a color as an index into the color palette. The following illustration shows the color-index values in the default color palette.
Example
The following examples assume that you are using the default color palette.
This example sets the color of the major gridlines for the value axis.
This example sets the color of the chart area interior to red, and sets the border color to blue.
If you would like to use color with FormatCondition in Visual Basic, see the Interior.ColorIndex property.
Support and feedback
Have questions or feedback about Office VBA or this documentation? Please see Office VBA support and feedback for guidance about the ways you can receive support and provide feedback.
Источник
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: –
Источник
VBA Excel ColorIndex Property
This tutorial explains how to use VBA Excel colorIndex Property to set color and get color from Cell or Shape, meaning of -4142, -4105, xlNone, xlAutomatic
What does VBA Excel ColorIndex Property do?
VBA Excel ColorIndex Property is to set color or get color for Objects like Cell color and Shape color. ColorIndex offers 56 basic colors plus the following special numbers.
ColorIndex Value | Explanation |
-4142 / xlColorIndexNone / xlNone | No fill |
-4105 / xlColorIndexAutomatic / xlAutomatic | Default color (white) |
From my personal experience, ColorIndex is a better Property compared with Color Property, you always get the color code 16777215 for both white and no fill, but you get different ColorIndex code.
You may also want to compare ColorIndex Property with RGB Property to use a different Property to set color for Cells.
Syntax of VBA Excel ColorIndex Property
Example of VBA Excel ColorIndex Property
Example 1: Set Cell A1 font color to red
Example 2: Set Cell A1 back color to red
Example 3: Set Cell A1 border color to red
Example 4: Get Cell A1 ColorIndex
Example – Find the first colored Cell using ColorIndex Property
The below example is copied from Microsoft Community and was answered by me.
Question
In column A I would like to indicate the value of the first coloured cell horizontally. By colored cell I mean cell with having a “fill color”. If you need an example then I could give it.
With which formula (or VB macro code) could I achieve that?
Answer
The Op asked how to find the first colored cell in a row, which apparently means the order is from left to right. In case the given range is more than 1 row, the looping order of For…Each loop is from left to right in the same row, and then move to the next row until the end of the Range. To know more about this Function, read the below article
Источник
Excel VBA ColorIndex
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
VBA ColorIndex Property of Excel VBA is very useful to set the fill colors, border colors and font colors. Excel VBA ColorIndex returns index values from 1 to 56, -4105 and -4142. You can set the default colors using VBA enumeration number -4105 ( or xlColorIndexAutomatic). We can set VBA colorIndex -4142 (or xlColorIndexNone) enumeration to clear the colors or set to no colors.
Syntax of Excel VBA ColorIndex
Here is the syntax of ColorIndex property of Excel VBA. You can set or return the color index value of the Excel Objects using the following VBA colorindex syntax.
Excel VBA Syntax to get the ColorIndex Value of the Excel Font, Interior or Border Color and store it in a Variable:
Syntax to set the ColorIndex Value in Excel VBA to Excel Color Objects using Excel ColorIndex value:
expression.ColorIndex= IndexValue (1 to 56,-4105 or -4142)
ColorIndex in Excel VBA
Here are the list of Excel VBA ColorIndex Values and respective Colors:
ColorIndex | Excel VBA Color | ColorIndex | Excel VBA Color |
---|---|---|---|
1 | RGB(0,0,0) | 29 | RGB(128,0,128) |
2 | RGB(255,255,255) | 30 | RGB(128,0,0) |
3 | RGB(255,0,0) | 31 | RGB(0,128,128) |
4 | RGB(0,255,0) | 32 | RGB(0,0,255) |
5 | RGB(0,0,255) | 33 | RGB(0,204,255) |
6 | RGB(255,255,0) | 34 | RGB(204,255,255) |
7 | RGB(255,0,255) | 35 | RGB(204,255,204) |
8 | RGB(0,255,255) | 36 | RGB(255,255,153) |
9 | RGB(128,0,0) | 37 | RGB(153,204,255) |
10 | RGB(0,128,0) | 38 | RGB(255,153,204) |
11 | RGB(0,0,128) | 39 | RGB(204,153,255) |
12 | RGB(128,128,0) | 40 | RGB(255,204,153) |
13 | RGB(128,0,128) | 41 | RGB(51,102,255) |
14 | RGB(0,128,128) | 42 | RGB(51,204,204) |
15 | RGB(192,192,192) | 43 | RGB(153,204,0) |
16 | RGB(128,128,128) | 44 | RGB(255,204,0) |
17 | RGB(153,153,255) | 45 | RGB(255,153,0) |
18 | RGB(153,51,102) | 46 | RGB(255,102,0) |
19 | RGB(255,255,204) | 47 | RGB(102,102,153) |
20 | RGB(204,255,255) | 48 | RGB(150,150,150) |
21 | RGB(102,0,102) | 49 | RGB(0,51,102) |
22 | RGB(255,128,128) | 50 | RGB(51,153,102) |
23 | RGB(0,102,204) | 51 | RGB(0,51,0) |
24 | RGB(204,204,255) | 52 | RGB(51,51,0) |
25 | RGB(0,0,128) | 53 | RGB(153,51,0) |
26 | RGB(255,0,255) | 54 | RGB(153,51,102) |
27 | RGB(255,255,0) | 55 | RGB(51,51,153) |
28 | RGB(0,255,255) | 56 | RGB(51,51,51) |
VBA to Print ColorIndex Table
Here is the Excel VBA Macro to print Excel ColorIndex Values and respective colors in Excel Sheet.
Set ColorIndex in Excel VBA
Here are the list of Excel VBA code to set ColorIndex to a Range of cells in Microsoft Excel Sheet.
Font Colors in Excel VBA
We can set the font colors in Excel VBA using ColorIndex property of Font Object. Here is the simple excel vba font color macro to set the font color of a given range A1:E20.
You can also get the fornt colors using ColorIndex and store it in a variable. Please check the below code snippet:
This will return the font color and assign to a variable.
Interior Colors in Excel VBA
We can change the Interior or fill colors of a range using Excel VBA ColorIndex Property. Excel Interior Color macro heps you to change the interior color of an obect.
You can get Cell colors using Excel VBA, here is the get cell color excel vba macro to get the cell background colors.
Border Colors in Excel VBA
ColorIndex property of Borders is very easy to set the border colors in Excel VBA. Here is
Clear Colors in Excel VBA
Some times we need to fill no colors in Excel, we can clear the Excel Object colors such as font, border and fill colors and set to automatic or no fill color. Here are example macro to clear the color and fill no colors.
Clear Background Color in Excel VBA
We often required to clear the background or fill color of the excel object. We can use the following Excel Macro to clear the background colors and set no interior colors.
The above macro will set the Interior.ColorIndex to -4142 enumeration. Interior.ColorIndex = -4142 is enumeration to clear the background or fill color.
Similarly, we can clear the boder colors using Excel VBA as shown below:
We can set the font colors to default or automatic colors using Excel VBA ColorIndex property of Font object. Here is an example:
VBA Colors
We can set the colors in VBA using many approaches. We use ColorIndex Property, VBA Color Constants or set RGB Colors. We have already seen how to use ColorIndex in Excel VBA. Let us see the Excel VBA Color Constants and RGB Colors.
Excel VBA Color Constants
We can use the VBA Color Constants to set the colors of Excel Objects. Here is an easy to understand example:
VBA Color Constant | VALUE | Excel VBA Color & RGB |
---|---|---|
vbBlack | 0x0 | RGB(0,0,0) |
vbRed | 0xFF | RGB(255,0,0) |
vbGreen | 0xFF00 | RGB(0,255,0) |
vbYellow | 0xFFFF | RGB(255,255,0) |
vbBlue | 0xFF0000 | RGB(0,0,255) |
vbMagenta | 0xFF00FF | RGB(255,0,255) |
vbCyan | 0xFFFF00 | RGB(0,255,255) |
vbWhite | 0xFFFFFF | RGB(255,255,255) |
RGB Colors in Excel VBA
We have only few color codes when we use Constants or ColorIndex Property. RGB helps us to use all possible combination of colors with Red, Green and Blue. Here is a simple Excel macro to explain the RGB in VBA.
RGB color can be any number between 0 and 255. Here are the list of RGB colors for Excel VBA ColorIndex color codes:
Источник
Understanding Color Codes
Every color is identified by a unique number. For example, 255 represents Red. 16774980 represent a specific cyan.
You can also convert any decimal number to its Hexadecimal representation (or Hex for short). For example, that cyan color number equals FFF744 in Hex representation (use any decimal to hex converter you find on the web to see how it works).
You can assign the color codes to any Color property of any object in either their decimal or hex representation. Precede the Hex value with the &H prefix (our cyan code will be set to: &HFFF744). For example, the background color of cell A1 can be set to be cyan in one of the following two options:
Range("A1").Interior.Color = &HFFF744
Range("A1").Interior.Color = 16774980
Tip: to clear the background (Fill) color of a range, assign it the value -4142. Luckily, we have an Excel enumeration for that, so you do not need to remember the specific code, just assign xlNone like that:
Range("A1").Interior.Color = xlNone
The RGB representation of a color
Another way to represent a color is by its unique combination of the Red, Green and Blue components, or RGB in short. Each component takes a value between 1 and 255.
Our cyan color above has a mix of 68 red, 247 green and 255 blue.
VBA offers an RGB function to convert a mix of RGB values to the decimal code of a color, making it useful to assign an RGB mix to any Color property. Let’s set the font color of cell A1:
Range("A1").Font.Color = RGB(68,247,255)
You can use Excel to choose a color you like from the color selection dialog box to see its RGB values.
In recent Excel versions the Hex code of the color is also presented. If not, you can use any RGB to Hex converter (such as this one) to find the Hex code of a color.
The twist of Hex color codes in Excel
As you noticed, a hex color code contains 6 characters. That is a construction of two characters for the R (Red) code in the mix, two characters for the G (Green) and two characters for the B (Blue), resulting in the RGB mix that also uniquely identifies a color.
You may also know that colors in Webpages are also usually represented in their hex representation, preceded by the hash (“#”) symbol. You would expect that #FFF744 will show the cyan on a webpage. You would be surprised to see a bright yellow instead.
The reason is that while the Hex representation of a color is constructed by joining the RGB codes for the Web, Excel constructs its color codes by joining the BGR codes. Yep, the R and the B are swapped.
So, if you want to see our beautiful cyan on your Webpage, swap the first “FF” with the last “44” in our code, resulting to: #44F7FF.
By the way, you might want to remember that swapping trick when you set specific colors for different controls when you design your User Forms. This will be valid to represent our cyan code in any color property: &HFF3399.
Setting color codes as constants
Colors are a great candidate for constants, as in many cases their value doesn’t change that often, yet we still want a consistent and readable VBA code.
Constants can take any value, in both Hex and decimal. For example:
Public Const DATE_PICKER_BG_COLOR = &HFF3399
Tip: as constants cannot be assigned functions, RGB() cannot be used here. A quick way to find the numeric value of any RGB set would be using the Immediate Window in the VBA Editor (CTRL+G). To print out the numeric value of RGB(68,247,255), type in the following statement in the Immediate Window and press Enter: ?RGB(68,247,255)
Color codes enumerations
Excel VBA maintains enumerations for a bunch of popular colors. This means that you don’t have the know the color code of these colors, just use the enumeration label for the color you want.
For example, vbRed enumerates 255 (the color code for red). Print the value of vbGreen in the immediate Window, what do you get?
The enumerated colors are:
vbBlack, vbWhite, vbCyan, vbBlue, vbYellow, vbRed, vbMagenta, vbGreen.
Setting the font color of cell A1 to yellow, was never easier than:
Range("A1").Font.Color = vbYellow
Using the ColorIndex property
In addition to the Color property used to set the color of some Excel objects, you will also find the ColorIndex property for these objects.
The ColorIndex property is a legacy from way back versions of Excel, but still supported.
The idea here is a fixed collection of 56 colors, each assigned its own numeric index. See the table below:
If these 56 colors satisfy your eye, you can simply assign any of these index numbers to the ColorIndex property of an object to set (or read) its color, like that:
Range("A1").Interior.ColorIndex = 8
Hey, don’t forget to share this Blog post with others! Thanks!