Remkomplekty.ru

IT Новости из мира ПК
23 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Цвета vba excel

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 есть предопределенные константы часто используемых цветов для заливки ячеек:

Присваивается цвет ячейке предопределенной константой в VBA Excel точно так же, как и числовым значением:

Пример кода 3:

Цветовая модель RGB

Цветовая система RGB представляет собой комбинацию различных по интенсивности основных трех цветов: красного, зеленого и синего. Они могут принимать значения от 0 до 255. Если все значения равны 0 – это черный цвет, если все значения равны 255 – это белый цвет.

Выбрать цвет и узнать его значения RGB можно с помощью палитры Excel:

Чтобы можно было присвоить ячейке или диапазону цвет с помощью значений RGB, их необходимо перевести в десятичное число, обозначающее цвет. Для этого существует функция VBA Excel, которая так и называется – RGB.

Пример кода 4:

Очистка ячейки (диапазона) от заливки

Для очистки ячейки (диапазона) от заливки используется константа xlNone :

Свойство .Interior.ColorIndex объекта Range

До появления Excel 2007 существовала только ограниченная палитра для заливки ячеек фоном, состоявшая из 56 цветов, которая сохранилась и в настоящее время. Каждому цвету в этой палитре присвоен индекс от 1 до 56. Присвоить цвет ячейке по индексу или вывести сообщение о нем можно с помощью свойства .Interior.ColorIndex:

Пример кода 5:

Просмотреть ограниченную палитру для заливки ячеек фоном можно, запустив в VBA Excel простейший макрос:

Пример кода 6:

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

Готовую стандартную палитру из 56 цветов можете посмотреть здесь.

31 комментарий для “VBA Excel. Цвет ячейки (заливка, фон)”

Спасибо, наконец то разобрался во всех перипетиях заливки и цвета шрифта.

Пожалуйста, Виктор. Очень рад, что статья пригодилась.

как проверить наличие фона?

Привет, Надежда!
Фон у ячейки есть всегда, по умолчанию – белый. Отсутствие цветного фона можно определить, проверив, является ли цвет ячейки белым:

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

Привет, Иван!
Посчитать ячейки с одинаковым фоном можно с помощью цикла.
Для реализации этого примера сначала выбираем в таблице ячейку с нужным цветом заливки. Затем запускаем код, который определяет цветовой индекс фона активной ячейки, диапазон таблицы вокруг нее и общее количество ячеек с такой заливкой в таблице.

Каким образом можно использовать не в процедуре, а именно в пользовательской функции VBA свойство .Interior.Color?
Скажем, проверять функцией значение какой-то ячейки и подкрашивать ячейку в зависимости от этого.

Фарин, пользовательская функция VBA предназначена только для возврата вычисленного значения в ячейку, в которой она расположена. Она не позволяет внутри себя менять формат своей ячейки, а также значения и форматы других ячеек.

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

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

Для подкрашивания ячейки в зависимости от ее значения используйте процедуру Sub или штатный инструмент Excel – условное форматирование.

а как можно закрасить только пустые ячейки ?

Лев, закрасить пустые ячейки можно с помощью цикла For Each… Next:

Евгений, спасибо за ссылку на интересный прием.

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

Привет, Александр!
Используйте функцию InStr, чтобы найти положение разделителей, а дальше функции Left и Mid. Смотрите пример с пробелом в качестве разделителя:

Или еще проще с помощью функции Split:

Добрый день!
подскажите, пожалуйста, как можно выводить из таблицы (150 столбцов х 150 строк) адрес ячеек (списком), если они имеют заливку определенного цвета.
Заранее спасибо!

Привет, Валентина!
Используйте два цикла For…Next. Определить числовой код цвета можно с помощью выделения одной из ячеек с нужным цветом.

Читать еще:  Как создать диалоговое окно в excel

добрый день! подскажите, пожалуйста, как сделать, чтобы результаты выводились на отдельный лист ?
заранее спасибо!

Валентина, замените в коде имя “Лист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 ? (или я сморозил…).
Заранее спасибо за ответ.

Как получить цвета по цветовой шкале условного форматирования Excel 2012 через код VBA

Мне нужно знать: Как получить цвета, сделанные цветовой гаммой условного форматирования Excel 2010 через код VBA. Эти цвета будут впоследствии назначены VBA в качестве фона диаграммы в соответствии со следующим изображением:

Я провел исследование на различных веб-сторонах и:

  1. большинство людей советуют, как читать цвет условного форматирования по методике .FormatConditions(index that is active).Interior.ColorIndex но в моем случае это не работает из-за ошибки «объект не поддерживает это свойство или метод»
  2. некоторые люди советуют написать собственное вычисление цветов (на основе значения ячеек). Я нашел различные способы, как это сделать, но ни один из них не может вычислить те же цвета, которые были вычислены ранее excel (те же цвета, что и на предыдущем рисунке).

поэтому я спрашиваю:

  1. есть ли способ непосредственно готовые цвета из ячеек? (или эти цвета недоступны для API)
  2. вы знаете, как вычислить те же цвета, что и Excel compute?
  3. вы знаете другой способ, как решить мою проблему?

Я считаю, что он должен как-то работать.

6 ответов

если нет лучшего ответа, вы можете попробовать это временное решение:

  1. ссылка / копирование данных в ячейки под диаграммой (с формулами, такими как =Sheet1!A1 )
  2. применить то же условное форматирование
  3. скрыть значения (с пользовательским форматом номера, как «» , т. е. пустой строковый литерал (2 двойные кавычки))
  4. сделать график прозрачным
  5. выровнять ячейки с график

обновление:

или вы можете попытаться вычислить цвет линейным приближением для каждого канала R, G, B, если условный формат использует только 2 базовых цвета (r1, g1, b1) и (r2, g2, b2) для 2 угловых случаев, которые могут быть

  • min и max стоимостью, например: 0 — 4 000
  • min и max процентов, например: 10% — 90%
    (я считаю, что вы можете использовать % * [массив — min_value], чтобы получить фактическое значение)
  • min и max процентиль, например: 0-й процентиль-100-й процентиль

для параметров процентов / процентилей сначала необходимо преобразовать фактическое значение в значение процентов / процентилей, а затем, если value или value > max используйте угловые цвета, в противном случае:

это скопирует изображение ячейки в верхний левый угол chartobject на том же листе. Обратите внимание на картины связана с скопирована ячейка — если значение или цвет изменения форматирования она будет меняться, чтобы соответствовать.

EDIT: я только что протестировал это с довольно маленькой матрицей 4×8 ячеек/диаграмм, и производительность довольно плохая! Может быть, лучше просто вставить без ссылки:=True .

Это не относится к вашей проблеме, но легко модифицируется для решения вашей проблемы.

Установка цвета ячейки при помощи vba. VBA Excel. Цвет ячейки (заливка, фон)

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

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

Начнем с простого. На главной панели инструментов ленты находится панель Формата Ячеек:

Читать еще:  Как убрать первую цифру в excel

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

Теперь зададим формат ячейки пользуясь контекстным меню, для чего кликнем правой кнопкой мыши на ячейке и в открывшемся списке выберем «Формат Ячеек»:

На вкладке «Заливка» можно выбрать цвет фона и узор.

Рассмотрим несколько иную ситуацию. Допустим вы хотите скопировать цвет ячейки (и формат) с существующей и применить к своим ячейкам. Воспользуемся кнопкой на главной панели «Формат по образцу» («метелочка»):

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

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

Задать цвет ячейке (A1 окрашивается в Желтый):

Sub Макрос2() Range(«A1»).Select With Selection.Interior .Color = 65535 End With End Sub

Скопировать формат ячейки (формат A1 копируется на A3):

Sub Макрос1() Range(«A1»).Select Selection.Copy Range(«A3»).Select Selection.PasteSpecial Application.CutCopyMode = False End Sub

Теперь комбинируя формат с операторами условия можно написать вычисления (например, суммирование) по условию цвета.

Будем благодарны, если Вы нажмете +1 и/или Мне нравится внизу данной статьи или поделитесь с друзьями с помощью кнопок ниже.

Заливка ячейки цветом в VBA Excel. Фон ячейки. Свойства.Interior.Color и.Interior.ColorIndex. Цветовая модель RGB. Стандартная палитра из 56 цветов.

Свойство.Interior.Color объекта Range

Начиная с Excel 2007 основным способом заливки диапазона или отдельной ячейки цветом (зарисовки, добавления, изменения фона) является использование свойства.Interior.Color объекта Range путем присваивания ему значения цвета в виде десятичного числа от 0 до 16777215 (всего 16777216 цветов).

Заливка ячейки цветом в VBA Excel

Cells(3, 6).Interior.Color = 12659

Поместите пример кода в свой программный модуль и нажмите кнопку на панели инструментов «Run Sub» или на клавиатуре «F5», курсор должен быть внутри выполняемой программы. На активном листе Excel ячейки и диапазон, выбранные в коде, окрасятся в соответствующие цвета.

Есть один интересный нюанс: если присвоить свойству .Interior.Color отрицательное значение от -16777215 до -1, то цвет будет соответствовать значению, равному сумме максимального значения палитры (16777215) и присвоенного отрицательного значения. Например, заливка всех трех ячеек после выполнения следующего кода будет одинакова:

Вместо вывода сообщений можно присвоить числовые значения цветов переменным, объявив их как Long.

Использование предопределенных констант

В VBA Excel есть предопределенные константы часто используемых цветов для заливки ячеек:

Присваивается цвет ячейке предопределенной константой в VBA Excel точно так же, как и числовым значением:

Цветовая модель RGB

Цветовая система RGB представляет собой комбинацию различных по интенсивности основных трех цветов: красного, зеленого и синего. Они могут принимать значения от 0 до 255. Если все значения равны 0 — это черный цвет, если все значения равны 255 — это белый цвет.

Выбрать цвет и узнать его значения RGB можно с помощью палитры Excel:

Открывается в новом окне

Чтобы можно было присвоить ячейке или диапазону цвет с помощью значений RGB, их необходимо перевести в десятичное число, обозначающее цвет. Для этого существует функция VBA Excel, которая так и называется — RGB.

Range(«A1»).Interior.Color = RGB(100, 150, 200)

Свойство.Interior.ColorIndex объекта Range

До появления Excel 2007 существовала только ограниченная палитра для заливки ячеек фоном, состоявшая из 56 цветов, которая сохранилась и в настоящее время. Каждому цвету в этой палитре присвоен индекс от 1 до 56. Присвоить цвет ячейке по индексу или вывести сообщение о нем можно с помощью свойства.Interior.ColorIndex.

Цвет фона ячейки в Microsoft Office Excel определяется свойством ColorIndex объекта Interior этой ячейки.

К примеру цвет ячейки A1 есть возможность установить так: Cells(1, 1).Interior.ColorIndex = 6 (желтоватый)
Соответственно считать цвет ячейки есть возможность так: ColorVar = Cells(1, 1).Interior.ColorIndex

Самая обычная последовательность действий для осознания этого примера последующая.

1. Откройте Excel.

2. Нажмите Alt + F11

3. Справа введите последующий код:

Private Sub Worksheet-Activate()
Cells(1, 1).Interior.ColorIndex = 6
End Sub

4. Переключитесь назад в Excel.

5. Переключитесь на 2-ой лист, а потом снова на 1-ый. В итоге цвет фона первой ячейки на первом листе должен стать желтоватым.

Цвет текста задается не в каком-либо формате (RGB, CMYK и т.д.), а номером, под которым он находится в гамме Excel. Всего в гамме находится 55 цветов и одно значение отводиться под автоцвет. Итого с помощью характеристики ColorIndex() есть возможность задать 56 значений цвета. Эти 55 цветов находятся в коллекции Colors объекта ActiveWorkbook, так что их есть возможность при желании поменять.

Цвета vba excel

Можно ещё и так …

Кстати, использование функции RGB в этом примере, вообще не имеет смысла, т.к. для того, чтобы создать собственный цвет, необходимо сначала изменить стандартный, например :

Примечание : создание нового цвета автоматически приведёт к изменению цвета всех ячеек текущей рабочей книге, где был использован старый цвет (в данном примере это индиго)

Range(«A1»).Interior.Color = vbRed ‘255

Попробовал но почемуто меняет и цвет бордюра
Можно не меняя его?

Читать еще:  Как убрать скобки в excel

Столкнулся с новой ещё более проблемной задачей

Выделяю группу ячеек по горизонтали на уровн 3 ячейки
Лист1.Range(«A3:AD3»).Interior.Color = vbWhite

а мне нужно чтобы заместо 3 ячейки была переменная x то есть Ax:ADx
как это можно нормально записать?
Компилятор ругается

Можно ещё и так, однако при выборе подобного способа, желательно учитывать, что Offset учитывает об’единённые ячейки.

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

Добавлено 06.06.08, 11:00
newland, Да, и кроме всего вышеперечисленного, Вы можете использовать ещё и такой вариант :

Выбор цветов

Значения свойств ForeColor и BackColor задают соответственно цвет переднего плана и цвет фона для форм и элементов управления. Для элементов управления значение свойства ForeColor задает цвет текста, размещаемого на элементе управления. Это свойство недоступно для тех элементов управления, на которых текст разместить нельзя. В случае форм значение свойства ForeColor задает цвет, который будет использоваться по умолчанию для всех новых размещаемых на форме элементов управления, а также для сетки на форме (эта сетка видна только в режиме проектирования формы).

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

На вкладке System (Системные) (рис. 19.1, слева) можно выбрать цвет из системной палитры Windows, т.е. из цветов, заданных в панели управления Windows для элементов интерфейса Windows. Если из списка выбрать пункт типа Desktop (Рабочий стол) или Button Face (Поверхность кнопки), VBA будет автоматически корректировать хранящееся в свойстве значение цвета при изменении соответствующих параметров в панели управления Windows.

Рис. 19.1. Здесь показаны обе вкладки диалогового окна выбора цвета в VBA

На вкладке Palette (Палитра) (рис. 19.1, справа) можно выбрать цвет из предлагаемой палитры. VBA автоматически назначит свойству числовое значение выбранного цвета. В общем, довольно просто.

Похожие главы из других книг:

Пользовательские настройки цветов

Пользовательские настройки цветов Чтобы цветовая схема вашей страницы отвечала цветовой схеме операционной системы пользователя, вы можете использовать одно из определенных в CSS значений, задающих цвета следующих элементов.• ActiveBorder – граница активного окна.• ActiveCaption

Использование сложных цветов

Использование сложных цветов Ранее для линий и заливок у нас были только простые, однотонные, цвета. Настала пора познакомиться со средствами канвы для создания и использования сложных цветов: градиентных и

Использование сложных цветов

Использование сложных цветов Ранее для линий и заливок у нас были только простые, однотонные, цвета. Настала пора познакомиться со средствами канвы для создания и использования сложных цветов: градиентных и графических. Линейный градиентный цвет В линейном градиентном

Color Conversion (Преобразование цветов)

Color Conversion (Преобразование цветов) При использовании данного фильтра на изображении исчезает разница между цветом источника освещения и общей температурой цвета фотографии (рис. 4.5). Рис. 4.5. Исходное изображение (слева) и пример использования фильтра Color Conversion

Color Correct (Коррекция цветов)

Color Correct (Коррекция цветов) Дает возможность изменять значение каждого из трех составляющих цветов изображения – красного, зеленого и синего, что позволяет увеличить или уменьшить влияние на общую картину теней изображения, средних тонов и ярких участков

Использование цветов в языке HTML

Использование цветов в языке HTML Страница не будет достаточно красочной, если ограничиться в ее оформлении только черным и белым цветом. Вкратце расскажем, как задается цвет тех или иных элементов страницы в языке HTML.Тег, определяющий цвет, выглядит следующим образом:

Выбор цветов

Выбор цветов Значения свойств ForeColor и BackColor задают соответственно цвет переднего плана и цвет фона для форм и элементов управления. Для элементов управления значение свойства ForeColor задает цвет текста, размещаемого на элементе управления. Это свойство недоступно для тех

Команда Color Balance (Баланс цветов)

Команда Color Balance (Баланс цветов) Исправить (или внести в художественных целях) цветовые искажения в изображении можно с помощью команды Color Balance (Баланс цветов). Особенностью этой команды является то, что она подразделяет ярко сти изображения на тени, блики и нейтральные

17.3. Создание, установка и использование цветов

17.3. Создание, установка и использование цветов Постановка задачи Требуется иметь возможность получать ссылки на цветовые объекты с последующим использованием этих объектов при рисовании различных форм в виде. К числу форм можно отнести текст, прямоугольники,

Подбор цветов

Подбор цветов CreateColorSpace Функция CreateColorSpace создает логическое цветовое пространство. HCOLORSPACE CreateColorSpace ( LPLOGCOLORSPACE lpLogColorSpace ); Параметры lpLogColorSpace — указывает на структуру типа LOGCOLORSPACE . Возвращаемые значения В случае успеха возвращается дескриптор, который идентифицирует

21.2.9. Применение различных цветов

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

Съемка цветов и других растений

Съемка цветов и других растений Тем, кто увлекается съемкой цветов, можно позавидовать. Их объекты доступны в любое время года: в лесу, в ботаническом саду, на клумбе, в цветочном киоске. Цветы очень декоративны, а значит, композиция вашего снимка должна быть очень простой.

Ссылка на основную публикацию
Adblock
detector