Vba excel выделить строку цветом

Обновлено: 07.07.2024

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

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

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

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

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

Проверено в Excel 2016.

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

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

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

Предопределенная константа Наименование цвета
vbBlack Черный
vbBlue Голубой
vbCyan Бирюзовый
vbGreen Зеленый
vbMagenta Пурпурный
vbRed Красный
vbWhite Белый
vbYellow Желтый

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

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

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

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

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

Палитра Excel

Открывается в новом окне Палитра Excel

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

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

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

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

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

Надстройка пригодится тем, кто часто работает с большими таблицами, просматривая их и сопоставляя данные в строках и столбцах. Что дает эта надстройка? Она выделяет столбец и строку таблицы на пересечении выделенной ячейки, благодаря чему можно просмотреть все данные в столбце и строке активной ячейки, не перепроверяя себя лишний раз – "А в том ли столбце я смотрю данные?".

Метод - выбор метода подсветки строки и столбца, их два:

  • выделение - строка и столбец выделяются так же, как если бы вы выделяли ячейки мышкой. У этого метода есть один недостаток. Если на листе в этом режиме будут сделаны изменения(удаление значения ячейки), то отменить их будет невозможно
  • условное форматирование - строка и столбец выделяются при помощи условного форматирования. Можно выбрать один из шести цветов для подсветки выделения строки и столбца. У такого подхода тоже есть недостаток. Все условное форматирование, примененное к текущему листу ранее, будет удалено

Весь лист - выделяются строка и столбец всего листа.

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

Выбранный диапазон - выделяются строка и столбец только в пределах указанного вами диапазона. Особенность: не допускается выделение несвязанных диапазонов.

Область применения - выбирается область листа, к которой применяется координатное выделение:

  • только строка - выделяется только строка активной ячейки
  • только столбец - выделяется только столбец активной ячейки
  • строка и столбец - выделяется строка и столбец на пересечении активной ячейки

Отменить Координатное выделение - отменяет примененное координатное выделение.

Внимание! Координатное выделение действует во всех открытых книгах во всех листах до тех пор, пока вы не отключите его через пункт «Отменить координатное выделение».

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

ExcelVBA_KoordSel.zip (49,5 KiB, 5 012 скачиваний)

В архиве расположен файл надстройки. Прежде чем установить надстройку, необходимо её распаковать из архива на жесткий диск, после чего установить. Как установить надстройку: Установка надстроек

Надстройка распространяется бесплатно и с открытыми исходными кодами - смотрите, изучайте, меняйте под себя.
Самый важный момент для тех, кого не устроит цвет выделения по умолчанию: чтобы изменить цвет выделения ячеек через условное форматирование, необходимо перейти в модуль mKoordSelection, найти вверху строку
Public Const lKS_FC_Color As Long = 10921638
и заменить число 10921638 на числовой код нужного цвета заливки. Подобрать нужный цвет можно следующим образом:

  • назначаем заливке любой ячейки нужный цвет
  • выделяем эту ячейку и выполняем код:

Sub GetActiveCellColor() MsgBox ActiveCell.Interior.Color, vbInformation, sAPP_NAME End Sub

этот код так же есть внутри надстройки, поэтому его можно вызвать просто через Alt+F8
Изменить цвет выделения методом Обычного выделения нельзя. Это ограничение самого Excel. Можно изменить только изменением цветовых схем Windows.

Время от времени бывает удобно иметь возможность выделить (подсветить) активную строку или столбец. Решение в очень простом методе достижения этого эффекта. Мы будем использовать условное форматирование и лишь пару строк кода VBA.

Подсветка цветом строки активной ячейки в Excel

Как всем хорошо известно, с помощью условного форматирования вы можете изменить (выделить) формат ячеек, которые соответствуют определенным критериям. В нашем случае должны быть выделены только те ячейки, которые расположены в той же строке, что и активная ячейка. Исходные данные для примера будут выглядеть так, как показано на рисунке ниже:

Исходные данные.

Выберите диапазон ячеек B2:K23 так, чтобы ячейка B2 оставалась активной.

Затем выберите инструмент: «ГЛАВНАЯ»-«Условное форматирование»-«Создать правило»-«Использовать формулу для форматируемых ячее». В поле «Форматировать значения, для которых следующая формула является истинной:» введите следующую формулу.

Форматировать значения.

Внимание: Адрес ячейки в левой части формулы B2 должен соответствовать АКТИВНОЙ ЯЧЕЙКИ выбранного диапазона в момент выделения! Посмотрите на рисунок ниже. На нем вы можете видеть, что в выбранной области одна ячейка (если вы ничего не напутали, это будет ячейка в верхнем левом углу диапазона) не окрашена (отсутствует синий фон). Эта ячейка является активной ячейкой в момент выделения диапазона. Адрес именно этой ячейки вы должны использовать при условном форматировании. Как вы можете видеть, в нашем примере это ячейка B2.

Запись СТРОКА(B2) = АктивнаяСтрока означает то, что ячейка выбранного диапазона будет отформатирована, если номер строки этой ячейки равен значению, хранящемуся в созданном имени диапазона АктивнаяСтрока.

То, что сейчас вы должны сделать, так это создать это имя и найти способ присвоить ему номер строки активной ячейки. Для начала создайте новое имя (CTRL+F3) и присвойте ему для начала просто значение ноль.

создайте новое имя.

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

Запустите редактор VBA (Alt+F11) и для листа (Например, «Пример2»), в котором вы хотите подсвечивать любые строки и где создано условное форматирование , введите код:

редактор VBA.

Если вы бы хотели, чтобы строки подсвечивались цветом только при перемещении в пределах определенного диапазона, вы можете немного изменить код, который мог бы выглядеть так (для нашего Примера 1):

немного изменить код.

Окончательный результат выглядит так:

Подсветка цветом строки.

Туда где перемещается курсор автоматически подсвечивается цветом целая строка диапазона в месте нахождения активной ячейки.

Подсветка цветом столбца в Excel

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

  1. В условном форматировании заменить функцию СТРОКА на СТОЛБЕЦ.
  2. Изменить в коде VBA-макроса свойство ActiveCell.Row на ActiveCell.Column.

Примечание. Имя исходного диапазона ячеек «АктивнаяСтрока» можно не изменять и оставить прежним как есть.

Решение изменения 1: Выберите инструмент «ГЛАВНАЯ»-«Стили»-«Условное форматирование»-«Управление правилами»:

Управление правилами.

В появившемся окне «Диспетчер правил условного форматирования» выберите правило и нажмите на кнопку «Изменить правило»:

Изменить правило.

Изменяем функцию, вносим желаемые стили оформления формата, которые доступны нам по кнопке «Формат»:

Формат.

И нажимаем ОК на всех открытых окнах.

Решение изменения 2: Открываем редактор VBA-кода и изменяем только лишь одно свойство для объекта ActiveCell с Row на Column:

VBA-код.

Наслаждаемся готовым желаемым результатом:

Подсветка цветом столбца.

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

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

код макроса выделения такой:
[vba]

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

код макроса выделения такой:
[vba]

код макроса выделения такой:
[vba]

[/vba] Автор - grh1
Дата добавления - 20.09.2019 в 19:10 [/vba] Автор - Kuzmich
Дата добавления - 20.09.2019 в 22:35

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


Вот код Н. Павлова, который:
1. не убивает ранее установленное цветовое форматирование на листе;
2. цвет выделения активной строки/столбца является оригинальным.
(выставил светло-зеленый цвет, он и выделяет этим цветом)

Но как сделать в этом коде, чтобы он постоянно был включен на листе, без кнопки ДОБАВИТЬ ВЫДЕЛЕНИЕ или вызова макроса на включение.

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


Вот код Н. Павлова, который:
1. не убивает ранее установленное цветовое форматирование на листе;
2. цвет выделения активной строки/столбца является оригинальным.
(выставил светло-зеленый цвет, он и выделяет этим цветом)

Но как сделать в этом коде, чтобы он постоянно был включен на листе, без кнопки ДОБАВИТЬ ВЫДЕЛЕНИЕ или вызова макроса на включение. grh1


Вот код Н. Павлова, который:
1. не убивает ранее установленное цветовое форматирование на листе;
2. цвет выделения активной строки/столбца является оригинальным.
(выставил светло-зеленый цвет, он и выделяет этим цветом)

Но как сделать в этом коде, чтобы он постоянно был включен на листе, без кнопки ДОБАВИТЬ ВЫДЕЛЕНИЕ или вызова макроса на включение. Автор - grh1
Дата добавления - 21.09.2019 в 08:05

Приветствую gling - надо без УФ.
Н. Павлова макрос очень устраивает - он не убивает форматирование на листе, но как сделать, чтобы макрос всегда был включен - не знаю. При открытии книги, приходится заново запускать макрос. Приветствую gling - надо без УФ.
Н. Павлова макрос очень устраивает - он не убивает форматирование на листе, но как сделать, чтобы макрос всегда был включен - не знаю. При открытии книги, приходится заново запускать макрос. grh1 но цвет накладывается на выделение и получается искажение цвета но цвет накладывается на выделение и получается искажение цвета но цвет накладывается на выделение и получается искажение цвета [/vba] Автор - Kuzmich
Дата добавления - 21.09.2019 в 09:41
После этой замены excel зависает намертво. Автор - grh1
Дата добавления - 21.09.2019 в 10:03 Всем спасибо за участие, разобрался с кодом Н. Павлова.
Тему закрываем. Всем спасибо за участие, разобрался с кодом Н. Павлова.
Тему закрываем. grh1
не хотите поделиться решением? Автор - Pelena
Дата добавления - 21.09.2019 в 11:35

Да, конечно.
Код на выделение активной строки/столбца Н. Павлова, убрано вкл/выкл макроса - работает постоянно
[vba]

Не убивает форматирование на листе

Да, конечно.
Код на выделение активной строки/столбца Н. Павлова, убрано вкл/выкл макроса - работает постоянно
[vba]

Не убивает форматирование на листе grh1

Да, конечно.
Код на выделение активной строки/столбца Н. Павлова, убрано вкл/выкл макроса - работает постоянно
[vba]

Не убивает форматирование на листе Автор - grh1
Дата добавления - 21.09.2019 в 12:47

Читайте также: