Vba excel цвет текста
VBA Excel. Цвет текста в ячейке
Изменение цвета текста (шрифта) в ячейке рабочего листа Excel с помощью кода VBA. Свойства .Font.Color, .Font.ColorIndex и .Font.TintAndShade
Использование цветовой палитры для присвоения цвета тексту в ячейке листа Excel аналогично присвоению цвета фону ячейки, только свойство диапазона .Interior меняем на свойство .Font.
Цвет текста и предопределенные константы
Цвет шрифту в ячейке можно присвоить с помощью предопределенных констант:
Напомню, что вместо индексов строк и столбцов можно использовать переменные. Список предопределенных констант смотрите здесь.
Цвет шрифта и модель RGB
Для изменения цвета текста в ячейке можно использовать цветовую модель RGB:
Аргументы функции RGB могут принимать значения от 0 до 255. Если все аргументы равны 0, цвет — черный, если все аргументы равны 255, цвет — белый. Функция RGB преобразует числовые значения основных цветов (красного, зеленого и синего) в индекс основной палитры.
Свойство .Font.ColorIndex
Свойство .Font.ColorIndex может принимать значения от 1 до 56. Это стандартная ограниченная палитра, которая существовала до Excel 2007 и используется до сих пор. Посмотрите примеры:
Таблица соответствия значений ограниченной палитры цвету:
Открывается в новом окне Стандартная палитра Excel из 56 цветов
Основная палитра
Основная палитра, начиная c Excel 2007, состоит из 16777216 цветов. Свойство .Font.Color может принимать значения от 0 до 16777215, причем 0 соответствует черному цвету, а 16777215 — белому.
Отрицательные значения свойства .Font.Color
При записи в Excel макрорекордером макроса с присвоением шрифту цвета используются отрицательные значения свойства .Font.Color, которые могут быть в пределах от -16777215 до -1. Отрицательные значения соответствуют по цвету положительному значению, равному сумме наибольшего индекса основной палитры и данного отрицательного значения. Например, отрицательное значение -8257985 соответствует положительному значению 8519230, являющегося результатом выражения 16777215 + (-8257985). Цвета текста двух ячеек из следующего кода будут одинаковы:
Свойство .Font.TintAndShade
Еще при записи макроса с присвоением шрифту цвета макрорекордером добавляется свойство .Font.TintAndShade, которое осветляет или затемняет цвет и принимает следующие значения:
- -1 — затемненный;
- — нейтральный;
- 1 — осветленный.
При тестировании этого свойства в Excel 2016, сравнивая затемненные и осветленные цвета, разницы не заметил. Сравните сами:
При тестировании в первых трех ячейках первого столбца должен быть одинаковый текст для удобства сравнения оттенков.
VBA Excel. Цвет текста (шрифта) в ячейке
Изменение цвета текста (шрифта) в ячейке рабочего листа Excel с помощью кода VBA. Свойства ячейки (диапазона) .Font.Color, .Font.ColorIndex и .Font.TintAndShade.
Использование цветовой палитры для присвоения цвета тексту в ячейке листа Excel аналогично присвоению цвета фону ячейки, только свойство диапазона .Interior меняем на свойство .Font.
Цвет текста и предопределенные константы
Цвет шрифту в ячейке можно присвоить с помощью предопределенных констант:
Напомню, что вместо индексов строк и столбцов можно использовать переменные. Список предопределенных констант смотрите здесь.
Цвет шрифта и модель RGB
Для изменения цвета текста в ячейке можно использовать цветовую модель RGB:
Аргументы функции RGB могут принимать значения от 0 до 255. Если все аргументы равны 0, цвет – черный, если все аргументы равны 255, цвет – белый. Функция RGB преобразует числовые значения основных цветов (красного, зеленого и синего) в индекс основной палитры.
Свойство .Font.ColorIndex
Свойство .Font.ColorIndex может принимать значения от 1 до 56. Это стандартная ограниченная палитра, которая существовала до Excel 2007 и используется до сих пор. Посмотрите примеры:
Таблица соответствия значений ограниченной палитры цвету:
Стандартная палитра Excel из 56 цветов
Основная палитра
Основная палитра, начиная c Excel 2007, состоит из 16777216 цветов. Свойство .Font.Color может принимать значения от 0 до 16777215, причем 0 соответствует черному цвету, а 16777215 – белому.
Отрицательные значения свойства .Font.Color
При записи в Excel макрорекордером макроса с присвоением шрифту цвета используются отрицательные значения свойства .Font.Color, которые могут быть в пределах от -16777215 до -1. Отрицательные значения соответствуют по цвету положительному значению, равному сумме наибольшего индекса основной палитры и данного отрицательного значения. Например, отрицательное значение -8257985 соответствует положительному значению 8519230, являющегося результатом выражения 16777215 + (-8257985). Цвета текста двух ячеек из следующего кода будут одинаковы:
Свойство .Font.TintAndShade
Еще при записи макроса с присвоением шрифту цвета макрорекордером добавляется свойство .Font.TintAndShade, которое осветляет или затемняет цвет и принимает следующие значения:
- -1 – затемненный;
- – нейтральный;
- 1 – осветленный.
При тестировании этого свойства в Excel 2016, сравнивая затемненные и осветленные цвета, разницы не заметил. Сравните сами:
excel vba цвет шрифта
Описание работы
Функция =ЦВЕТШРИФТА(ЯЧЕЙКА) возвращает код цвета шрифта указанной ячейки. Функция имеет один обязательный аргумент.
- ЯЧЕЙКА — ссылка на ячейку, цвет шрифта которой необходимо определить.
Ниже представлен пример, демонстрирующий работу функции.
Следует обратить внимание на тот факт, что функция не пересчитывается автоматически. Это связано с тем, что изменение цвета шрифта ячейки Excel не приводит к пересчету формул. Для пересчета формулы необходимо пользоваться сочетанием клавиш Ctrl+Alt+F9
Зачем это нужно?
С помощью данной функции, мы можете быстро сортировать ячейки с определенным цветом шрифта, подсчитывать их количество. К примеру, можно создать отдельный столбец и протянуть в нем данную функцию, для того, чтобы по этому столбцу быстро отсортировать строки с различным шрифтом. Можно создать сводную таблицу, в которой будет вестись подсчет ячеек с заданным цветом шрифта.
Код на VBA
Вы можете самостоятельно внедрить данную функцию в Excel или установить надстройку.
Я хочу установить цвет шрифта ячейки для определенного значения RGB.
Если я использую
Я получаю желтый цвет, но если я использую более экзотическое значение RGB, например:
Я просто получаю серый цвет назад.
Почему я не могу использовать какое-либо значение RGB? И знаете ли вы обходные способы?
vba excel-vba colors excel rgb
4 ответа
7 Решение LeppyR64 [2008-12-18 17:33:00]
Excel использует только цвета в палитре цветов. Когда вы устанавливаете ячейку с использованием значения RGB, она выбирает тот, который находится в палитре, которая является ближайшим совпадением. Вы можете обновить палитру своими цветами, а затем выбрать свой цвет, и это будет работать.
Это позволит вам увидеть, что в настоящее время находится в палитре:
Это позволит вам установить палитру
Быстрый совет: в палитре Excel есть два ряда цветов, которые редко используются и обычно могут быть настроены на пользовательские значения без видимых изменений на листах других народов.
Здесь приведен код для создания разумного набора цветов «мягкого тона», которые гораздо менее оскорбительны, чем значения по умолчанию:
Public Sub SetPalePalette (необязательный wbk как Excel.Workbook) «Эта подпрограмма создает пользовательскую палитру бледных тонов, которую вы можете использовать для элементов управления, заголовков и диалогов
‘ ** ЭТОТ КОД В ОБЩЕСТВЕННОМ ДОМЕНЕ ** ‘Найджел Хеффернан http://Excellerando.Blogspot.com
‘Цветовая палитра Excel имеет две скрытые строки, которые редко используются: Строка 1: цвета от 17 до 24 «Строка 2: цвета от 25 до 32 — используется в SetGrayPalette в этой книге
‘Код для фиксации существующего настройки обновления экрана и, при необходимости, «временно приостановить обновление, пока эта процедура вызывает раздражающее ‘мерцает на экране. и восстанавливает обновление экрана при выходе, если требуется.
Dim bScreenUpdating As Boolean
Если bScreenUpdating = True, тогда Приложение .ScreenUpdating = False End If
‘Если Application.ScreenUpdating bScreenUpdating Then ‘Application.ScreenUpdating = bScreenUpdating ‘End If
Если wbk ничего не значит Установить wbk = ThisWorkbook End If
Если Application.ScreenUpdating bScreenUpdating Then Application.ScreenUpdating = bScreenUpdating End If
Public Sub SetGreyPalette() ‘Эта подпрограмма создает пользовательскую палитру greyshades, которую вы можете использовать для элементов управления, заголовков и диалогов
‘ ** ЭТОТ КОД В ОБЩЕСТВЕННОМ ДОМЕНЕ ** ‘Найджел Хеффернан http://Excellerando.Blogspot.com
‘Цветовая палитра Excel имеет две скрытые строки, которые редко используются: «Строка 1: цвета от 17 до 24» — используется в SetPalePalette в этой книге ‘Строка 2: цвета от 25 до 32
‘Код для фиксации существующего настройки обновления экрана и, при необходимости, «временно приостановить обновление, пока эта процедура вызывает раздражающее ‘мерцает на экране. не забудьте восстановить обновление экрана при выходе!
Dim bScreenUpdating As Boolean
Если bScreenUpdating = True, тогда Приложение .ScreenUpdating = False End If
‘Если Application.ScreenUpdating bScreenUpdating Then ‘Application.ScreenUpdating = bScreenUpdating ‘End If
С этой книгой .Цветы (25) = & HF0F0F0 .Цветы (26) = & HE8E8E8 .Цвета (27) = & HE0E0E0 .Цветы (28) = & HD8D8D8 .Цветы (29) = & HD0D0D0 .Цветы (30) = & HC8C8C8 ‘& HC0C0C0’ Scipped & HC0C0C0 — это обычный 25% серый цвет в основной палитре .Цвета (31) = & HB8B8B8 ‘Обратите внимание, что разрывы становятся шире: человеческий глаз более чувствителен .Colors(32) = & HA8A8A8 ‘к изменениям в светлых серах, поэтому это будет восприниматься как линейная шкала Конец с
‘В правом столбце палитры Excel по умолчанию заданы следующие серые страницы:
‘Цвета (56) = & H333333 ‘Цвета (16) = & H808080 ‘Цвета (48) = & H969696 ‘Цвета (15) = & HC0C0C0’ по умолчанию ‘25% серый’
‘Это должно быть изменено для улучшения цвета «зазора» и сделать цвета легко различимыми:
С этой книгой .Цветы (56) = & H505050 .Цветы (16) = & H707070 .Цветы (48) = & H989898 ‘. Цвета (15) = & HC0C0C0 Конец с
Если Application.ScreenUpdating bScreenUpdating Then Application.ScreenUpdating = bScreenUpdating End If
Вы можете написать функцию CaptureColors и ReinstateColors для каждой рабочей книги Open() и BeforeClose() событий. Или даже для каждого листа активировать и деактивировать событие.
У меня есть код, лежащий где-то, который создает «тепловой» градиент цвета для трехмерных диаграмм, что дает вам прогресс от «холодного» синего до «горячего» красного цвета за тридцать два шага. Это сложнее, чем вы могли подумать: градиент цветов, который будет восприниматься визуальной системой человека «равными интервалами» (которая работает по логарифмической шкале интенсивности и имеет нелинейные весы для красного, зеленого и синего цветов как «сильные» цвета ) требуется время, чтобы построить — и вам нужно использовать VBA для принуждения MS Chart к использованию цветов, которые вы указали, в указанном вами порядке.
Изменение цвета текста (шрифта) в ячейке рабочего листа Excel с помощью кода VBA. Свойства ячейки (диапазона) .Font.Color, .Font.ColorIndex и .Font.TintAndShade.
Использование цветовой палитры для присвоения цвета тексту в ячейке листа Excel аналогично присвоению цвета фону ячейки, только свойство диапазона .Interior меняем на свойство .Font.
Цвет текста и предопределенные константы
Цвет шрифту в ячейке можно присвоить с помощью предопределенных констант:
Напомню, что вместо индексов строк и столбцов можно использовать переменные. Список предопределенных констант смотрите здесь.
Цвет шрифта и модель RGB
Для изменения цвета текста в ячейке можно использовать цветовую модель RGB:
Аргументы функции RGB могут принимать значения от 0 до 255. Если все аргументы равны 0, цвет — черный, если все аргументы равны 255, цвет — белый. Функция RGB преобразует числовые значения основных цветов (красного, зеленого и синего) в индекс основной палитры.
Свойство .Font.ColorIndex
Свойство .Font.ColorIndex может принимать значения от 1 до 56. Это стандартная ограниченная палитра, которая существовала до Excel 2007 и используется до сих пор. Посмотрите примеры:
Таблица соответствия значений ограниченной палитры цвету:
Стандартная палитра Excel из 56 цветов
Основная палитра
Основная палитра, начиная c Excel 2007, состоит из 16777216 цветов. Свойство .Font.Color может принимать значения от 0 до 16777215, причем 0 соответствует черному цвету, а 16777215 — белому.
Отрицательные значения свойства .Font.Color
При записи в Excel макрорекордером макроса с присвоением шрифту цвета используются отрицательные значения свойства .Font.Color, которые могут быть в пределах от -16777215 до -1. Отрицательные значения соответствуют по цвету положительному значению, равному сумме наибольшего индекса основной палитры и данного отрицательного значения. Например, отрицательное значение -8257985 соответствует положительному значению 8519230, являющегося результатом выражения 16777215 + (-8257985). Цвета текста двух ячеек из следующего кода будут одинаковы:
Свойство .Font.TintAndShade
Еще при записи макроса с присвоением шрифту цвета макрорекордером добавляется свойство .Font.TintAndShade, которое осветляет или затемняет цвет и принимает следующие значения:
- -1 — затемненный;
- — нейтральный;
- 1 — осветленный.
При тестировании этого свойства в Excel 2016, сравнивая затемненные и осветленные цвета, разницы не заметил. Сравните сами:
В первые три ячейки первого столбца записывается одинаковый текст для удобства сравнения оттенков.
Excel vba цвет текста
VBA: изменение цвета шрифта (не работает ((()
Смотрите также = «» Then
Range For Each Так как это Else c.Interior.ColorIndex = End If End: Кроме ЯЧЕЙКА(«формат»;. ) со
: Чтобы именно формулами работать с фильтром. быть установлено значение
wdRed Selection.Style =1. Менять цветЕще один такой может интересно комуНо ведь тьма Sheets(shAccounting).UsedRange
Step -1
KompromisCells(toc, 1) = c In Target
делает невозможным, при
0 End If Sub скудным функционалом, не цвет ячейки получатьКаким образов можно
showmodal = false
ActiveDocument.Styles(«Заголовок 2 Знак») (5 цвета) текства
вопрос ни оОписание надстройки приложите.
рабочих примеров! Как-то
For i =
If a(i, colSN)
: Добрый день.
Chr(Asc(Cells(toc — 1,
If InStr(1, c.Value, необходимости, добавление столбцов Next End Sub
airdefence припомню стандартных функций
это пользовательскую функцию определить цвет текста
Чтобы вызвать созданную Selection.Font.Size = 9
в выделенной области;
чем и влеплю
SLAVICK
ведь люди воплощают?!
UBound(a) To 4
<> «» Then
Подскажите, пожалуйста, видимо
1)) + 1) «Вася», vbTextCompare) Then перед столбцом I.airdefence: Спасибо! отслеживающих цвет шрифта. писать надо. в ячейке, что
в редакторе форму, Selection.Font.Color = wdColorPlum2. Изменять стиль замечание. Я же: А у меня
Была в свое
Step -1If a(i, colSN)
в лексике ошибка,
tochkaName = Cells(toc,
c.Interior.ColorIndex = 3 Т.е. чтоб весь
: Димит, можно я
airdefence
VectorXXX
Фродо бы обойтись без
ложите на лист Selection.Font.Color = wdColorGreen текста (подчеркнутый стиль);
уже писал: красит — см
время надстройка BlackBoxIf a(i, colsn)
= TextBox3 Then почему не меняется
1) Else c.Interior.ColorIndex =
лист проверялся на
вас еще помучаю)?
: А можно это
: не всегда в
: If Range(«B23»).Font.Color =
использования фильтра?
ворда кнопку, в
Selection.Font.Color = wdColorGray80первые3. Изменять размерЦитата
пример. для сравнения двух
<> «» ThenIf a(i, colDate2) цвет шрифта приendtochka = Cells(toc,
0 End If
условия «Отправил запрос
Я для своей сделать с помощью примечаниях пишут спец 255 Then ‘действиефайл для примера её коде пишете три строки меняют: текста (+- 5);
SLAVICK, 20.04.2016 вПравда немного поменял массивов и раскраской
If a(i, colsn) = «» Then положительном результате проверки? 1) Next End SubОтличный ТУ» и «Получены
работы использую excel, target, чтоб при цена, бывают всякие если красный шрифт прикрепил — лист2 «userform1.show», где «userform1″
цвет выделения наНа форме должна 12:41, в сообщении функцию, поскольку там в зависимости от = TextBox3 ThenIsKMTReady = False200?’200px’:»+(this.scrollHeight+5)+’px’);»>If a(i, colSN) =Cells(toc, 1 +
вариант, только выделяется
ТУ» и найдя,
собственно по этому
любом изменении на акции и тд.
Else ‘действие если — как должно — имя вашей красный, затем стиль присутствовать кнопка выхода № 12200?’200px’:»+(this.scrollHeight+5)+’px’);»>примера так
были неизвестные переменные.
совпадений. r.Cells(i, colsn).Font.ColorIndex =Exit Function
TextBox3 Then Font.ColorIndex
1) = 300 ячейка, а нужна ставил дату «today» и спрашиваю. В
листе он проверялVectorXXX шрифт не красный
быть. формы. выделенного фрагмента на
из формы.На листе и не увидели
Мы же живогоИли наши случаи 15End If = 15Cells(toc, 1 + строка. Interior это в ячейке справа свое время я на условие?
: Фродо, Спасибо большое, End If
код макроса:кнопка выхода из «Заголовок 2 Знак»,
должна присутствовать кнопка Откуда мы знаем,
примера так и как-то не совпадают?If a(i, colDate2)
End IfSLAVICK 2) = 300 оператор цвета ячейки?
и слева, соответственно. из интернета собралДимит взял Вашу функцию.ts-79
Sub ПрайсМакро() Columns(«G:G»).Select формы: весь код затем меняют размерность выхода из ms что Вы там не увидели. (не дорос еще = «» Then
(VBA Excel) Цвет текста примечания
End If: А пример намWith ActiveSheet.Shapes.AddShape(msoShapeOval, 300,airdefence
Димит шаблон VBA кода: Так:airdefence: Критичен ли цвет Selection.ClearContents Range(«H3»).Select ActiveCell.FormulaR1C1 кнопки состоит из
шрифта («кегль») на word. себе написали?Kompromis
до вынесения самостоятельныхIsKMTReady = FalseNext
вместо Вас придумывать? 300, diam, diam)
MS WORD — изменить цвет текста и его стиль
: Я поменял на: Почему нет? для себя -Private Sub Worksheet_Change(ByVal: Подскажите пожалуйста, как
в столбце F? = «курс:» Range(«I3»).Select трех букв «end»
9и так же.
lapin9126: BlackBox-
выводов, не догоняюExit FunctionEnd Function или угадывать, что.name = tochkaNameIf InStr(1, c.Value,
Удалите строку IF вот его часть: Target As Range) в VBA в
Ведь есть еще ActiveCell.FormulaR1C1 = «25»кнопка выхода изкоманда Selection.Font.Color = должны быть три: Здравствуйте, подскажите как
надстройка. После установки какая проблема)End IfДелаю порверку на
Вы имеете ввиду.Fill.ForeColor.RGB = vbGreen «Вася», vbTextCompare) Then NOT Intersect(Target, Range(«i2:i1500»))Private Sub Worksheet_Change(ByVal
Dim c As excel написать- и атрибут столбца Range(«G7»).Select ActiveCell.FormulaR1C1 = ms word: код
. задает цвет кнопки на листе средствами VBA изменить появляется кнопка в_Boroda_End If сравнеине введенного в написав:.Line.Weight = 0.2 c.Font.ColorIndex = 3 IS Nothing THEN Target As Range) Range, firstAddress AsЕсли где либо D (пустой/не пустой),
_ «=IF(ISERR(SEARCH(«»*витяжки*»»,RC[-5])>0),RC[-1]*0.85,RC[-1]*0.88)» Range(«G7»).Select кнопки «Application.Quit» выделенного текста.
(по пунктам: 1,2,3) цвет текста примечания. меню. Имеет интерфейс: Не путайте процедуру
End If ТехВох3 с базой200?’200px’:»+(this.scrollHeight+5)+’px’);»>Font.ColorIndex = 15.Line.ForeColor.RGB = vbGreen Else c.Font.ColorIndex = и соответствующий END If Target.Cells.Count > String Set c на листе есть который передает те Selection.AutoFill Destination:=Range(«G7:G205») Range(«G7:G205»).SelectЭто было вкратце
Так, воспользовавшись макрорекордером,P.S Я НЕWith .TextFrame.Characters.Font .Name настроек как и и функцию. ЕслиNext данных и, если
Font — чего?’.TextFrame2.TextRange.Text = tochkaName 0 End If, IF 1 Then Exit = Target.Find(«Вася», LookIn:=xlValues) слово «Вася», то же условия что
ActiveSheet.Range(«$A$6:$F$205»).AutoFilter Field:=6, Criteria1:=vbRed, что да как. вы постигнете дзен ПРОШУ ВСЕ СДЕЛАТЬ
= «Arial» .Size чего выводить. Основная у Вас код
End Function есть совпадение, выкрасить если TextBox а[color=red][size=14]’вот здесь надо
но не могуИли измените в
Определение цвета текста в ячейке
Sub If Not If Not c текст в данной
и цвет в Operator:=xlFilterFontColor Range(«G7»).Select ActiveCell.FormulaR1C1 Пробуйте, несите сюда
начинаете разбираться в ЗА МЕНЯ, ПРОСТО = 10 .Bold функция — грубо начинается с SubKompromis
найденное в базе. — тогда так: поставить цвет текста[/size][/color] заставить выделять всю
этой строке лимитирующий Intersect(Target, Range(«i2:i1500»)) Is Is Nothing Then строке меняет цвет. столбце F
= «=RC[-1]» Range(«G7»).Select уточняющие вопросы. VBA! ОБЪЯСНИТЕ ЧТО ДА
= False .ColorIndex
говоря, сравнить два — это процедура,: Хотел, грешным делом Никак не получаетсяКод200?’200px’:»+(this.scrollHeight+5)+’px’);»>TextBox3.Font.ColorIndex = 15.TextFrame.Characters.Text = Cells(toc, строку, и соответственно, диапазон «i2:i1500″ Nothing Then If firstAddress = c.AddressУсловное форматирование неИли там могут Selection.FillDown ActiveWindow.SmallScroll Down:=-138
Святой НякаЛайкТеперь дело за КАК. Заранее всем = 57 ‘ столбца данных и если с Function
)))) (_Boroda_ 1)
снимать выделение шрифтаВообще то, если Target(1, 1).Value =
Do Cells.Rows(c.Row).Interior.ColorIndex = подходит. Спасибо. быть и другие Selection.AutoFilter Range(«I7»).Select ActiveCell.FormulaR1C1: Создать программный продукт.doc
рутиной — там спасибо. так цвет не напротив каждой строки — это функцияПроверил ваш вариант. неSLAVICK
: А если ячейкиEnd With цветом.
проверка диапазона требуется, «Получены ТУ» Then 3 Set cДимит значения? = «=IF(RC[2]/R3C9-RC[-2]VectorXXX
же, в редактореСвятой НякаЛайк меняет End With
поставить метку:
(UDF).
красит ((: Конечно не получится a(i, colSN) (еслиExit DoДимит
то для того With Target(1, 2) = Target.FindNext(c) Loop: Private Sub Vasya()
Если нет то:vikttur
: Здравствуйте, помогите пожалуйста VB создать форму: Меню сервис -Aleks7771. Данные содержится
http://www.on-line-teaching.com/vba/lsn0109.html_Boroda_ — что Вы это ячейка, конечно),End If
: См. выше что бы макрос .Value = Now
VBA Excel: Если где либо на листе есть слово «Вася», то текст в данной строке меняет цвет
While Not c Dim c As=ЕСЛИ(D7=»»;ЕСЛИ(ЕОШ(ПОИСК(«*витяжка*»;B7)>0);F7*0,85;F7*0,88);F7): Может быть, посмотреть
решить следующую проблему: и положить на макрос — запись: в обоих столбцах;
И даже так: И не покрасит.
Установка цвета шрифта в VBA
Я хочу установить цвет шрифта ячейки для определенного значения RGB.
Если я использую
Я получаю желтый цвет, но если я использую более экзотическое значение RGB, например:
Я просто получаю серый цвет назад.
Почему я не могу использовать какое-либо значение RGB? И знаете ли вы обходные способы?
vba excel-vba colors excel rgb
4 ответа
7 Решение LeppyR64 [2008-12-18 17:33:00]
Excel использует только цвета в палитре цветов. Когда вы устанавливаете ячейку с использованием значения RGB, она выбирает тот, который находится в палитре, которая является ближайшим совпадением. Вы можете обновить палитру своими цветами, а затем выбрать свой цвет, и это будет работать.
Это позволит вам увидеть, что в настоящее время находится в палитре:
Это позволит вам установить палитру
Быстрый совет: в палитре Excel есть два ряда цветов, которые редко используются и обычно могут быть настроены на пользовательские значения без видимых изменений на листах других народов.
Здесь приведен код для создания разумного набора цветов «мягкого тона», которые гораздо менее оскорбительны, чем значения по умолчанию:
Public Sub SetPalePalette (необязательный wbk как Excel.Workbook) «Эта подпрограмма создает пользовательскую палитру бледных тонов, которую вы можете использовать для элементов управления, заголовков и диалогов
‘ ** ЭТОТ КОД В ОБЩЕСТВЕННОМ ДОМЕНЕ ** ‘Найджел Хеффернан http://Excellerando.Blogspot.com
‘Цветовая палитра Excel имеет две скрытые строки, которые редко используются: Строка 1: цвета от 17 до 24 «Строка 2: цвета от 25 до 32 — используется в SetGrayPalette в этой книге
‘Код для фиксации существующего настройки обновления экрана и, при необходимости, «временно приостановить обновление, пока эта процедура вызывает раздражающее ‘мерцает на экране. и восстанавливает обновление экрана при выходе, если требуется.
Dim bScreenUpdating As Boolean
Если bScreenUpdating = True, тогда Приложение .ScreenUpdating = False End If
‘Если Application.ScreenUpdating bScreenUpdating Then ‘Application.ScreenUpdating = bScreenUpdating ‘End If
Если wbk ничего не значит Установить wbk = ThisWorkbook End If
Если Application.ScreenUpdating bScreenUpdating Then Application.ScreenUpdating = bScreenUpdating End If
Public Sub SetGreyPalette() ‘Эта подпрограмма создает пользовательскую палитру greyshades, которую вы можете использовать для элементов управления, заголовков и диалогов
‘ ** ЭТОТ КОД В ОБЩЕСТВЕННОМ ДОМЕНЕ ** ‘Найджел Хеффернан http://Excellerando.Blogspot.com
‘Цветовая палитра Excel имеет две скрытые строки, которые редко используются: «Строка 1: цвета от 17 до 24» — используется в SetPalePalette в этой книге ‘Строка 2: цвета от 25 до 32
‘Код для фиксации существующего настройки обновления экрана и, при необходимости, «временно приостановить обновление, пока эта процедура вызывает раздражающее ‘мерцает на экране. не забудьте восстановить обновление экрана при выходе!
Dim bScreenUpdating As Boolean
Если bScreenUpdating = True, тогда Приложение .ScreenUpdating = False End If
‘Если Application.ScreenUpdating bScreenUpdating Then ‘Application.ScreenUpdating = bScreenUpdating ‘End If
С этой книгой .Цветы (25) = & HF0F0F0 .Цветы (26) = & HE8E8E8 .Цвета (27) = & HE0E0E0 .Цветы (28) = & HD8D8D8 .Цветы (29) = & HD0D0D0 .Цветы (30) = & HC8C8C8 ‘& HC0C0C0’ Scipped & HC0C0C0 — это обычный 25% серый цвет в основной палитре .Цвета (31) = & HB8B8B8 ‘Обратите внимание, что разрывы становятся шире: человеческий глаз более чувствителен .Colors(32) = & HA8A8A8 ‘к изменениям в светлых серах, поэтому это будет восприниматься как линейная шкала Конец с
‘В правом столбце палитры Excel по умолчанию заданы следующие серые страницы:
‘Цвета (56) = & H333333 ‘Цвета (16) = & H808080 ‘Цвета (48) = & H969696 ‘Цвета (15) = & HC0C0C0’ по умолчанию ‘25% серый’
‘Это должно быть изменено для улучшения цвета «зазора» и сделать цвета легко различимыми:
С этой книгой .Цветы (56) = & H505050 .Цветы (16) = & H707070 .Цветы (48) = & H989898 ‘. Цвета (15) = & HC0C0C0 Конец с
Если Application.ScreenUpdating bScreenUpdating Then Application.ScreenUpdating = bScreenUpdating End If
Вы можете написать функцию CaptureColors и ReinstateColors для каждой рабочей книги Open() и BeforeClose() событий. Или даже для каждого листа активировать и деактивировать событие.
У меня есть код, лежащий где-то, который создает «тепловой» градиент цвета для трехмерных диаграмм, что дает вам прогресс от «холодного» синего до «горячего» красного цвета за тридцать два шага. Это сложнее, чем вы могли подумать: градиент цветов, который будет восприниматься визуальной системой человека «равными интервалами» (которая работает по логарифмической шкале интенсивности и имеет нелинейные весы для красного, зеленого и синего цветов как «сильные» цвета ) требуется время, чтобы построить — и вам нужно использовать VBA для принуждения MS Chart к использованию цветов, которые вы указали, в указанном вами порядке.