Содержание
- Функция RGB
- Синтаксис
- Замечания
- Пример
- См. также
- Поддержка и обратная связь
- VBA Excel. Стандартная палитра из 56 цветов
- Стандартная палитра из 56 цветов
- Наименования 56 цветов палитры
- RGB и HEX коды оттенков палитры
- Процент черного в оттенках серого
- Вывод 56-цветной палитры на лист
- VBA Excel. Конвертация цвета из Long в RGB
- Функция ColorLongToRGB
- Конвертация цвета в RGB
Функция RGB
Возвращает целое число типа Long, представляющее значение цвета RGB.
Синтаксис
RGB(красный, зеленый, синий)
Синтаксис функции RGB состоит из следующих именованных аргументов:
Part | Описание |
---|---|
Красного | Обязательный аргумент; Variant (Integer). Число в диапазоне от 0 до 255 включительно, которое представляет красный компонент цвета. |
Зеленый | Обязательный аргумент; Variant (Integer). Число в диапазоне от 0 до 255 включительно, которое представляет зеленый компонент цвета. |
Синий | Обязательный аргумент; Variant (Integer). Число в диапазоне от 0 до 255 включительно, которое представляет синий компонент цвета. |
Замечания
Для методов и свойств приложения, принимающих спецификацию цвета, эта спецификация должна быть числом, представляющим значение цвета RGB. Значение цвета RGB указывает относительную интенсивность красного, зеленого и синего, чтобы вызвать определенный цвет, который должен отображаться.
Предполагается, что значение для любого аргумента в RGB, превышающее 255, должно быть 255.
В следующей таблице перечислены некоторые стандартные цвета и значения красного, зеленого и синего, которые они включают:
Цвет | Значение красного | Значение зеленого | Значение синего |
---|---|---|---|
Черный | 0 | 0 | 0 |
Синий | 0 | 0 | 255 |
Зеленый | 0 | 255 | 0 |
Cyan | 0 | 255 | 255 |
Красный | 255 | 0 | 0 |
Пурпурный | 255 | 0 | 255 |
Желтый | 255 | 255 | 0 |
Белый | 255 | 255 | 255 |
Возвращаемые этой функцией значения цвета RGB не совместимы со значениями, используемыми операционной системой Macintosh. Они могут использоваться в контексте приложений Microsoft для Macintosh, но не должны использоваться при непосредственной передачи изменений цвета в операционную систему Macintosh.
Пример
В этом примере показано, как функция RGB используется, чтобы вернуть целое число, представляющее значение цвета RGB. Он используется для тех методов и свойств приложения, которые принимают спецификацию цвета. Объект MyObject и его свойство используются только в целях иллюстрации. Если MyObject не существует или у него нет свойства Color , возникает ошибка.
См. также
Поддержка и обратная связь
Есть вопросы или отзывы, касающиеся Office VBA или этой статьи? Руководство по другим способам получения поддержки и отправки отзывов см. в статье Поддержка Office VBA и обратная связь.
Источник
VBA Excel. Стандартная палитра из 56 цветов
Наименования цветов стандартной палитры Excel из 56 оттенков на русском и английском языках. Соответствие цветов индексам VBA и их RGB и HEX коды.
Стандартная палитра из 56 цветов
За ограниченную палитру в VBA Excel отвечает свойство ColorIndex, которое используется для записи и чтения:
Свойство ColorIndex принимает и возвращает значения от 1 до 56.
Наименования 56 цветов палитры
Наименования 56 цветов стандартной ограниченной палитры Excel на русском и английском языках:
Индекс | Наименование по-русски |
Наименование по-английски | Оттенок |
---|---|---|---|
1 | Черный | Black | |
2 | Белый | White | |
3 | Красный | Red | |
4 | Лайм | Lime | |
5 | Синий | Blue | |
6 | Желтый | Yellow | |
7 | Фуксия* | Fuchsia* | |
8 | Цвет морской волны | Aqua | |
9 | Темно-бордовый | Maroon | |
10 | Зеленый | Green | |
11 | Темно-синий | Navy blue | |
12 | Оливковый | Olive | |
13 | Пурпурный | Purple | |
14 | Бирюзовый | Teal | |
15 | Серебряный | Silver | |
16 | Серый | Gray | |
17 | Светло-пурпурно-синий | Light purple blue | |
18 | Розовато-лиловый | Mauve | |
19 | Бледно-желто-зеленый | Pale yellow green | |
20 | Бледно-голубой | Pale blue | |
21 | Сливовый | Plum | |
22 | Лососевый | Salmon | |
23 | Темно-сине-голубой | Light navy blue | |
24 | Барвинок | Periwinkle | |
25 | Темно-синий | Navy blue | |
26 | Фуксия* | Fuchsia* | |
27 | Желтый | Yellow | |
28 | Цвет морской волны | Aqua | |
29 | Пурпурный | Purple | |
30 | Коричнево-малиновый | Maroon | |
31 | Сине-зеленый | Teal | |
32 | Синий | Blue | |
33 | Небесно-голубой | Vivid sky blue | |
34 | Бледно-голубой | Pale blue | |
35 | Бледно-зеленый | Pale green | |
36 | Светло-желтый | Light yellow | |
37 | Сине-голубой | Shade of blue | |
38 | Бледно-пурпурно-розовый | Pale magenta pink | |
39 | Светло-сиреневый | Light lilac | |
40 | Оранжево-персиковый | Peach-orange | |
41 | Светло-синий | Light blue | |
42 | Светло-бирюзовый | Light turquoise | |
43 | Желто-зеленый | Yellow green | |
44 | Желтый мандарин | Tangerine yellow | |
45 | Сигнальный оранжевый | Safety orange | |
46 | Оранжевый | Orange | |
47 | Темно-сине-серый | Dark blue gray | |
48 | Светло-серый | Light gray | |
49 | Полуночно-синий | Midnight blue | |
50 | Зеленая трава | Green grass | |
51 | Темно-зеленый | Dark green | |
52 | Темно-коричневый | Dark brown | |
53 | Темно-красный | Dark red | |
54 | Розовато-лиловый | Mauve | |
55 | Синий пигмент | Blue pigment | |
56 | Темный уголь | Dark charcoal |
* Вместо термина Фуксия (Fuchsia) можно использовать термин Маджента (Magenta), так как в RGB-модели Фуксия и Маджента являются одним и тем же цветом.
Обратите внимание, что в стандартной палитре Excel из 56 цветов есть повторяющиеся оттенки. Наименования цветов (по их HEX-кодам) подобраны, главным образом, по статьям, опубликованным в Википедии.
RGB и HEX коды оттенков палитры
RGB и HEX коды оттенков 56-цветной палитры Excel:
Индекс | Код HEX | Код RGB | Оттенок |
---|---|---|---|
1 | #000000 | RGB(0, 0, 0) | |
2 | #ffffff | RGB(255, 255, 255) | |
3 | #ff0000 | RGB(255, 0, 0) | |
4 | #00ff00 | RGB(0, 255, 0) | |
5 | #0000ff | RGB(0, 0, 255) | |
6 | #ffff00 | RGB(255, 255, 0) | |
7 | #ff00ff | RGB(255, 0, 255) | |
8 | #00ffff | RGB(0, 255, 255) | |
9 | #800000 | RGB(128, 0, 0) | |
10 | #008000 | RGB(0, 128, 0) | |
11 | #000080 | RGB(0, 0, 128) | |
12 | #808000 | RGB(128, 128, 0) | |
13 | #800080 | RGB(128, 0, 128) | |
14 | #008080 | RGB(0, 128, 128) | |
15 | #c0c0c0 | RGB(192, 192, 192) | |
16 | #808080 | RGB(128, 128, 128) | |
17 | #9999ff | RGB(153, 153, 255) | |
18 | #993366 | RGB(153, 51, 102) | |
19 | #ffffcc | RGB(255, 255, 204) | |
20 | #ccffff | RGB(204, 255, 255) | |
21 | #660066 | RGB(102, 0, 102) | |
22 | #ff8080 | RGB(255, 128, 128) | |
23 | #0066cc | RGB(0, 102, 204) | |
24 | #ccccff | RGB(204, 204, 255) | |
25 | #000080 | RGB(0, 0, 128) | |
26 | #ff00ff | RGB(255, 0, 255) | |
27 | #ffff00 | RGB(255, 255, 0) | |
28 | #00ffff | RGB(0, 255, 255) | |
29 | #800080 | RGB(128, 0, 128) | |
30 | #800000 | RGB(128, 0, 0) | |
31 | #008080 | RGB(0, 128, 128) | |
32 | #0000ff | RGB(0, 0, 255) | |
33 | #00ccff | RGB(0, 204, 255) | |
34 | #ccffff | RGB(204, 255, 255) | |
35 | #ccffcc | RGB(204, 255, 204) | |
36 | #ffff99 | RGB(255, 255, 153) | |
37 | #99ccff | RGB(153, 204, 255) | |
38 | #ff99cc | RGB(255, 153, 204) | |
39 | #cc99ff | RGB(204, 153, 255) | |
40 | #ffcc99 | RGB(255, 204, 153) | |
41 | #3366ff | RGB(51, 102, 255) | |
42 | #33cccc | RGB(51, 204, 204) | |
43 | #99cc00 | RGB(153, 204, 0) | |
44 | #ffcc00 | RGB(255, 204, 0) | |
45 | #ff9900 | RGB(255, 153, 0) | |
46 | #ff6600 | RGB(255, 102, 0) | |
47 | #666699 | RGB(102, 102, 153) | |
48 | #969696 | RGB(150, 150, 150) | |
49 | #003366 | RGB(0, 51, 102) | |
50 | #339966 | RGB(51, 153, 102) | |
51 | #003300 | RGB(0, 51, 0) | |
52 | #333300 | RGB(51, 51, 0) | |
53 | #993300 | RGB(153, 51, 0) | |
54 | #993366 | RGB(153, 51, 102) | |
55 | #333399 | RGB(51, 51, 153) | |
56 | #333333 | RGB(51, 51, 51) |
RGB-коды можно использовать в VBA Excel наряду с индексами цветов стандартной палитры, а HEX-коды — в HTML.
Процент черного в оттенках серого
Процентное соотношение черного цвета в оттенках серого:
Индекс | Наименование | Процент черного | Оттенок |
---|---|---|---|
1 | Черный | 100% | |
2 | Белый | 0% | |
15 | Серебряный | 25% | |
16 | Серый | 50% | |
48 | Светло-серый | 40% | |
56 | Темный уголь | 80% |
Вывод 56-цветной палитры на лист
Вывод на рабочий лист Excel 56-цветной палитры с помощью кода VBA:
Источник
VBA Excel. Конвертация цвета из Long в RGB
Конвертация цвета из числового значения Long в RGB формат из кода VBA Excel с помощью пользовательской функции ColorLongToRGB. Примеры.
Функция ColorLongToRGB
Пользовательская функция ColorLongToRGB по своему действию является обратной для встроенной в VBA Excel функции RGB, которая значения цветов по системе RGB переводит в значения типа Long.
Для конвертации цвета из Long в RGB нам понадобится функция Windows API CopyMemory (копирование блока памяти из одного расположения в другое), которую следует объявить в разделе Declarations стандартного модуля:
Это вариант для 64-разрядных версий VBA Excel, для 32-разрядных платформ из объявления следует убрать ключевое слово PtrSafe и, возможно, тип данных LongPtr заменить на Long.
Параметры функции CopyMemory :
- Destination — указатель на начальный адрес места назначения скопированного блока;
- Source — указатель на начальный адрес копируемого блока памяти;
- Длина — размер копируемого блока памяти в байтах.
Кроме того, нам понадобится переменная пользовательского типа данных, которую следует объявить в разделе Declarations:
Элементы пользовательского типа данных myRGB:
- r — интенсивность красного цвета;
- g — интенсивность зеленого цвета;
- b — интенсивность синего цвета.
Код функции ColorLongToRGB, предназначенной для конвертации цвета из Long в RGB:
d — числовое значение цвета типа Long.
В данном случае, числовое значение цвета типа Long распознается как массив из четырех байтов, значение первого из которых соответствует интенсивности красного цвета, второго — интенсивности зеленого цвета, третьего — интенсивности синего цвета. Четвертый байт может содержать значение альфа-канала (информация о прозрачности рисунка), который в Excel не используется.
Функция ColorLongToRGB с помощью функции Windows API CopyMemory копирует массив из первых трех байтов числового значения цвета в три элемента пользовательского типа данных myRGB (r, g, b).
Конвертация цвета в RGB
Код функции ColorLongToRGB в сборке с объявлением функция Windows API CopyMemory и пользовательского типа данных myRGB:
Источник
Конвертация цвета из числового значения Long в RGB формат из кода VBA Excel с помощью пользовательской функции ColorLongToRGB. Примеры.
Функция ColorLongToRGB
Пользовательская функция ColorLongToRGB по своему действию является обратной для встроенной в VBA Excel функции RGB, которая значения цветов по системе RGB переводит в значения типа Long.
Для конвертации цвета из Long в RGB нам понадобится функция Windows API CopyMemory
(копирование блока памяти из одного расположения в другое), которую следует объявить в разделе Declarations стандартного модуля:
Declare PtrSafe Sub CopyMemory Lib «kernel32» Alias «RtlMoveMemory» (Destination As Any, Source As Any, ByVal Length As LongPtr) |
Это вариант для 64-разрядных версий VBA Excel, для 32-разрядных платформ из объявления следует убрать ключевое слово PtrSafe и, возможно, тип данных LongPtr заменить на Long.
Параметры функции CopyMemory
:
- Destination — указатель на начальный адрес места назначения скопированного блока;
- Source — указатель на начальный адрес копируемого блока памяти;
- Длина — размер копируемого блока памяти в байтах.
Кроме того, нам понадобится переменная пользовательского типа данных, которую следует объявить в разделе Declarations:
Type myRGB r As Byte g As Byte b As Byte End Type |
Элементы пользовательского типа данных myRGB:
- r — интенсивность красного цвета;
- g — интенсивность зеленого цвета;
- b — интенсивность синего цвета.
Код функции ColorLongToRGB, предназначенной для конвертации цвета из Long в RGB:
Function ColorLongToRGB(d As Long) As myRGB CopyMemory ColorLongToRGB, d, 3 End Function |
d — числовое значение цвета типа Long.
В данном случае, числовое значение цвета типа Long распознается как массив из четырех байтов, значение первого из которых соответствует интенсивности красного цвета, второго — интенсивности зеленого цвета, третьего — интенсивности синего цвета. Четвертый байт может содержать значение альфа-канала (информация о прозрачности рисунка), который в Excel не используется.
Функция ColorLongToRGB с помощью функции Windows API CopyMemory
копирует массив из первых трех байтов числового значения цвета в три элемента пользовательского типа данных myRGB (r, g, b).
Код функции ColorLongToRGB в сборке с объявлением функция Windows API CopyMemory
и пользовательского типа данных myRGB:
Declare PtrSafe Sub CopyMemory Lib «kernel32» Alias «RtlMoveMemory» (Destination As Any, Source As Any, ByVal Length As LongPtr) Type myRGB r As Byte g As Byte b As Byte End Type Function ColorLongToRGB(d As Long) As myRGB CopyMemory ColorLongToRGB, d, 3 End Function |
Пример 1
Проверка работоспособности пользовательской функции ColorLongToRGB:
Sub Primer1() Dim x As myRGB, a As Long a = RGB(red:=120, green:=200, blue:=150) x = ColorLongToRGB(a) MsgBox «r = « & x.r & vbNewLine & «g = « & x.g & vbNewLine & «b = « & x.b End Sub |
Результат работы кода:
Пример 2
Есть таблица, первый столбец которой заполнен произвольными цветами:
Необходимо числовой код каждого цвета типа Long преобразовать в RGB формат и заполнить его элементами пустые ячейки таблицы.
Код VBA Excel для решения данной задачи:
Sub Primer2() Dim x As myRGB, myCell As Range For Each myCell In Range(«A2:A6») x = ColorLongToRGB(myCell.Interior.Color) myCell.Offset(0, 1) = x.r myCell.Offset(0, 2) = x.g myCell.Offset(0, 3) = x.b Next End Sub |
Результат работы кода:
Пример 3
Пример функции ColorLongToRGBA c альфа-каналом в сборке с объявлением функция Windows API CopyMemory
и пользовательского типа данных myRGBA:
Declare PtrSafe Sub CopyMemory Lib «kernel32» Alias «RtlMoveMemory» (Destination As Any, Source As Any, ByVal Length As LongPtr) Type myRGBA r As Byte g As Byte b As Byte a As Byte End Type Function ColorLongToRGBA(d As Long) As myRGBA CopyMemory ColorLongToRGBA, d, 4 End Function |
Элемент a
пользовательского типа данных myRGBA — это альфа-канал, который содержит информацию о прозрачности рисунка.
Here are some small functions for you. From your sheet, press Alt—F11 to reach the VBA editor, insert a new module, paste the below code, go back to your worksheet and use them by their names, like in =FillColor(A1)
The first two are the promised «3-liners» giving decimal values for font and background colors — not very useful though
The second pair converts the decimal number to RGB and returns a string of format N, N, N
The third pair are array formulas — select 3 cells in a row, enter the formula and press Ctrl+Shift+Enter to obtain numeric RGB values in 3 neighboring cells
Function FillColor(Target As Range) As Variant
FillColor = Target.Interior.Color
End Function
Function FontColor(Target As Range) As Variant
FontColor = Target.Font.Color
End Function
Function FillColorRGB(Target As Range) As Variant
Dim N As Double
N = Target.Interior.Color
FillColorRGB = Str(N Mod 256) & ", " & Str(Int(N / 256) Mod 256) & ", " & Str(Int(N / 256 / 256) Mod 256)
End Function
Function FontColorRGB(Target As Range) As Variant
Dim N As Double
N = Target.Font.Color
FontColorRGB = Str(N Mod 256) & ", " & Str(Int(N / 256) Mod 256) & ", " & Str(Int(N / 256 / 256) Mod 256)
End Function
Function FillColorRGBArray(Target As Range) As Variant
Dim N As Double, A(3) As Integer
N = Target.Interior.Color
A(0) = N Mod 256
A(1) = Int(N / 256) Mod 256
A(2) = Int(N / 256 / 256) Mod 256
FillColorRGBArray = A
End Function
Function FontColorRGBArray(Target As Range) As Variant
Dim N As Double, A(3) As Integer
N = Target.Font.Color
A(0) = N Mod 256
A(1) = Int(N / 256) Mod 256
A(2) = Int(N / 256 / 256) Mod 256
FontColorRGBArray = A
End Function
A word of caution: changing the color of a cell does not start recalculation by the above functions/formulas, as recoloring a cell in general is not supposed to drive recalculation. You have to manually start a full recalculation using Ctrl+Alt+Shift+F9
RGB(Red, Green, Blue)
Функция RGB получает RGB-код цвета из основных компонентов
Возвращаемое значение
Возвращает значение типа Long, представляющее цвет в модели RGB. Значение RGB указывает относительную интенсивность красного, зеленого и синего компонентов, образующих отображаемый цвет. RGB-код цвета получается из компонентов по формуле:
RGB=red+(green*256)+(blue*65536)
Параметры
Функция содержит именованные аргументы
Red,Green,Blue | Обязательный аргумент типа Variant(Integer). Число в интервале от 0 до 255 включительно, представляющие соответственно красный, зеленый и синий компонент цвета. Значение любого аргумента функции RGB, превышающее 255, считается равным 255 |
Пример
Dim Red Red=RGB(255,0,0) 'устанавливаем красный цвет Form1.BackColor=Red ' делаем красным фон формы
Категория
Функции обработки цвета
What does VBA Excel RGB Property do?
VBA Excel RGB Property is a color Property of Objects, commonly used for Cell color or Shape color.
“RGB” stands for Red Green Blue, which are known as three additive primary colors, which can be combined to produce other colors. For example, purple is a mix of blue and red. In RGB Property, you need to give a value (from 0 to 255) for each color in order to mix a new color. For example, Red = 255 means the brightness of color red is 100%.
If you try to change a color but you don’t know the color code, you can visit the websites below
http://www.ifreesite.com/color/
http://big-coronasdklua.blogspot.hk/2011/04/rgb.html
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 RGB Property
expression.RGB(red, green, blue)
red | Integer from 0-255 |
green | Integer from 0-255 |
blue | Integer from 0-255 |
Example of Excel VBA RGB Property
Example 1: Set Cell A1 font color to red
Range("A1").Font.Color = RGB(255, 0, 0)
Example 2: Set Cell A1 back color to red
Range("A1").Interior.Color = RGB(255, 0, 0)
Example 3: Set Cell A1 border color to red
Range("A1").Borders.Color = RGB(255, 0, 0)
Usually Property comes in a pair, one is to Set Property Method and another is Get Property Method. However, RGB does not seem to have the Get Method.
To get the RGB Color, we need to get the use Interior.Color Property to get Interior Color first and then convert to RGB color based on the below formula
Interior Color = red+ green * 256 + blue * 256 ^ 2
Note carefully that if a Cell is colorless (no color), Interior.Color would return value 16777215, which is also the white color.
Below is a Function to get RGB color, where r, g, b are RGB value of Red, Green, Blue
Public Function wRGB(rng As Range) Dim intColor As Long Dim rgb As String intColor = rng.Interior.Color r = intColor And 255 g = intColor 256 And 255 b = intColor 256 ^ 2 And 255 wRGB = r & "," & g & "," & b End Function