Excel при нажатии изменение цвета ячейки

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

Изменить цвет ячейки при нажатии на ячейку с кодом VBA
Измените выделенный цвет, когда ячейки выбраны с помощью кода VBA
Выделите всю строку и столбец активной ячейки с помощью Kutools for Excel


Изменить цвет ячейки при нажатии на ячейку с кодом VBA

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

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

2. в Microsoft Visual Basic для приложений окна, скопируйте и вставьте приведенный ниже код VBA в Code окно.

VBA: изменить цвет ячейки при нажатии на нее

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
    Target.Interior.Color = vbRed
End Sub
Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)
    Target.Interior.Color = vbGreen
End Sub

3. Нажмите другой + Q клавиши одновременно, чтобы закрыть Microsoft Visual Basic для приложений окно.

Затем, когда вы дважды щелкните ячейку, она будет окрашена в красный цвет. И когда вы щелкаете правой кнопкой мыши по ячейке, она будет окрашена в зеленый цвет. Смотрите скриншот:



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

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

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

2. в Microsoft Visual Basic для приложений окна, скопируйте и вставьте приведенный ниже код VBA в Code окно.

Код VBA: изменить выделенный цвет выбранного диапазона

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    With Target
        .Worksheet.Cells.FormatConditions.Delete
        .FormatConditions.Add xlExpression, , "TRUE"
        .FormatConditions(1).Interior.Color = vbYellow
    End With
End Sub

3. Нажмите другой + Q ключи одновременно, чтобы закрыть Microsoft Visual Basic для приложений окно.

С этого момента цвет выделенного диапазона или ячейки изменится на желтый. Когда вы щелкаете другую ячейку или диапазон ячеек, ячейки будут раскрашены автоматически.


Выделите всю строку и столбец активной ячейки с помощью Kutools for Excel

Если вы имеете дело с большим листом, необходимо выделить всю строку и столбец активной ячейки, чтобы облегчить чтение. Здесь Макет для чтения полезности Kutools for Excel могу помочь тебе.

1. Нажмите Кутулс > Макет для чтения. Смотрите скриншот:

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

Внимание: Вы можете изменить настройки макета чтения в зависимости от ваших потребностей, как показано на скриншоте ниже.

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


Выделите всю строку и столбец активной ячейки с помощью Kutools for Excel


Лучшие инструменты для работы в офисе

Kutools for Excel Решит большинство ваших проблем и повысит вашу производительность на 80%

  • Снова использовать: Быстро вставить сложные формулы, диаграммы и все, что вы использовали раньше; Зашифровать ячейки с паролем; Создать список рассылки и отправлять электронные письма …
  • Бар Супер Формулы (легко редактировать несколько строк текста и формул); Макет для чтения (легко читать и редактировать большое количество ячеек); Вставить в отфильтрованный диапазон
  • Объединить ячейки / строки / столбцы без потери данных; Разделить содержимое ячеек; Объединить повторяющиеся строки / столбцы… Предотвращение дублирования ячеек; Сравнить диапазоны
  • Выберите Дубликат или Уникальный Ряды; Выбрать пустые строки (все ячейки пустые); Супер находка и нечеткая находка во многих рабочих тетрадях; Случайный выбор …
  • Точная копия Несколько ячеек без изменения ссылки на формулу; Автоматическое создание ссылок на несколько листов; Вставить пули, Флажки и многое другое …
  • Извлечь текст, Добавить текст, Удалить по позиции, Удалить пробел; Создание и печать промежуточных итогов по страницам; Преобразование содержимого ячеек в комментарии
  • Суперфильтр (сохранять и применять схемы фильтров к другим листам); Расширенная сортировка по месяцам / неделям / дням, периодичности и др .; Специальный фильтр жирным, курсивом …
  • Комбинируйте книги и рабочие листы; Объединить таблицы на основе ключевых столбцов; Разделить данные на несколько листов; Пакетное преобразование xls, xlsx и PDF
  • Более 300 мощных функций. Поддерживает Office/Excel 2007-2021 и 365. Поддерживает все языки. Простое развертывание на вашем предприятии или в организации. Полнофункциональная 30-дневная бесплатная пробная версия. 60-дневная гарантия возврата денег.

вкладка kte 201905


Вкладка Office: интерфейс с вкладками в Office и упрощение работы

  • Включение редактирования и чтения с вкладками в Word, Excel, PowerPoint, Издатель, доступ, Visio и проект.
  • Открывайте и создавайте несколько документов на новых вкладках одного окна, а не в новых окнах.
  • Повышает вашу продуктивность на 50% и сокращает количество щелчков мышью на сотни каждый день!

офисный дно

Выбор цвета ячейки по нажатию на нее.

foliant

Дата: Понедельник, 30.11.2015, 11:07 |
Сообщение № 1

Группа: Пользователи

Ранг: Участник

Сообщений: 86


Репутация:

0

±

Замечаний:
40% ±


Excel 2010

Добрый день уважаемые знатоки! Будьте добры, подскажите пожалуйста, каким образом можно реализовать выбор цвета ячейки не из ленты, а непосредственно по нажатию на нее? Работаю с таблицами, большие объемы данных, и в зависимости от значения окрашиваю ячейку в зеленый или красный цвет. УФ пробовал, но не подходит, так как значения могут быть как числовые так и текствовые. Четкой определенности нет. Может какой-нибудь выпадающий список или комбинация клавиш? Вобщем я в excele на начальном уровне.

 

Ответить

SLAVICK

Дата: Понедельник, 30.11.2015, 11:15 |
Сообщение № 2

Группа: Модераторы

Ранг: Старожил

Сообщений: 2290


Репутация:

766

±

Замечаний:
0% ±


2019

Комбинация клавиш:
Alt Я ЗЗ(буквы з)
А дальше стрелками выбирайте


Иногда все проще чем кажется с первого взгляда.

Сообщение отредактировал SLAVICKПонедельник, 30.11.2015, 11:17

 

Ответить

Мурад

Дата: Понедельник, 30.11.2015, 11:16 |
Сообщение № 3

Группа: Проверенные

Ранг: Ветеран

Сообщений: 509


Репутация:

17

±

Замечаний:
0% ±


Excel 2007

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

 

Ответить

foliant

Дата: Понедельник, 30.11.2015, 11:27 |
Сообщение № 4

Группа: Пользователи

Ранг: Участник

Сообщений: 86


Репутация:

0

±

Замечаний:
40% ±


Excel 2010

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

Сообщение отредактировал Serge_007Вторник, 01.12.2015, 00:44

 

Ответить

foliant

Дата: Понедельник, 30.11.2015, 11:30 |
Сообщение № 5

Группа: Пользователи

Ранг: Участник

Сообщений: 86


Репутация:

0

±

Замечаний:
40% ±


Excel 2010

Комбинация клавиш:
Alt Я ЗЗ(буквы з)
А дальше стрелками выбирайте

имеется ввиду по одному нажатию 2-3-х клавиш = 1 цвет
[moder]Не надо цитировать пост целиком. Это нарушение Правил форума[/moder]

Сообщение отредактировал PelenaПонедельник, 30.11.2015, 11:35

 

Ответить

Pelena

Дата: Понедельник, 30.11.2015, 11:38 |
Сообщение № 6

Группа: Админы

Ранг: Местный житель

Сообщений: 18797


Репутация:

4284

±

Замечаний:
±


Excel 2016 & Mac Excel

Если цвета всего два, то запишите макрорекодером окрашивание ячейки и повесьте эти два макроса на разные сочетания клавиш


«Черт возьми, Холмс! Но как??!!»
Ю-money 41001765434816

 

Ответить

Manyasha

Дата: Понедельник, 30.11.2015, 11:39 |
Сообщение № 7

Группа: Модераторы

Ранг: Старожил

Сообщений: 2198


Репутация:

898

±

Замечаний:
0% ±


Excel 2010, 2016

foliant, покажите все-таки в файле, какие ячейки как закрашивать, может кто-нибудь УФ придумает…
И сколько цветов нужно для закраски? Если 2-3, то можно макрос на клавиши какие-нибудь повесить


ЯД: 410013299366744 WM: R193491431804

 

Ответить

foliant

Дата: Понедельник, 30.11.2015, 11:53 |
Сообщение № 8

Группа: Пользователи

Ранг: Участник

Сообщений: 86


Репутация:

0

±

Замечаний:
40% ±


Excel 2010

Если 2-3, то можно макрос на клавиши какие-нибудь повесить

подскажите как записать?

К сообщению приложен файл:

1958131.xlsx
(28.0 Kb)

 

Ответить

SLAVICK

Дата: Понедельник, 30.11.2015, 11:57 |
Сообщение № 9

Группа: Модераторы

Ранг: Старожил

Сообщений: 2290


Репутация:

766

±

Замечаний:
0% ±


2019

Вот ловите
Красная заливка:ctrl к
Зеленая:ctrl з
Русская раскладка

К сообщению приложен файл:

1958131.xlsm
(31.7 Kb)


Иногда все проще чем кажется с первого взгляда.

 

Ответить

foliant

Дата: Понедельник, 30.11.2015, 12:01 |
Сообщение № 10

Группа: Пользователи

Ранг: Участник

Сообщений: 86


Репутация:

0

±

Замечаний:
40% ±


Excel 2010

Огромное спасибо

Сообщение отредактировал Serge_007Вторник, 01.12.2015, 00:45

 

Ответить

foliant

Дата: Понедельник, 30.11.2015, 12:02 |
Сообщение № 11

Группа: Пользователи

Ранг: Участник

Сообщений: 86


Репутация:

0

±

Замечаний:
40% ±


Excel 2010

 

Ответить

foliant

Дата: Понедельник, 30.11.2015, 12:10 |
Сообщение № 12

Группа: Пользователи

Ранг: Участник

Сообщений: 86


Репутация:

0

±

Замечаний:
40% ±


Excel 2010

sorry, тут же возникла проблемка: при попытке вернуть действие (в случаи если ошибся) назад не отменятся. Так что этот метод не подходит.

 

Ответить

_Boroda_

Дата: Вторник, 01.12.2015, 00:25 |
Сообщение № 13

Группа: Модераторы

Ранг: Местный житель

Сообщений: 16618


Репутация:

6465

±

Замечаний:
0% ±


2003; 2007; 2010; 2013 RUS

Объясните принцип раскраски. Почему какая-то ячейка зеленая, а какая-то красная?


Скажи мне, кудесник, любимец ба’гов…
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995

 

Ответить

foliant

Дата: Вторник, 01.12.2015, 11:15 |
Сообщение № 14

Группа: Пользователи

Ранг: Участник

Сообщений: 86


Репутация:

0

±

Замечаний:
40% ±


Excel 2010

Объясните принцип раскраски

Зеланая — событие выиграло, красный — проиграло. Есть еще варианты кроме макросов?

 

Ответить

foliant

Дата: Вторник, 01.12.2015, 11:21 |
Сообщение № 15

Группа: Пользователи

Ранг: Участник

Сообщений: 86


Репутация:

0

±

Замечаний:
40% ±


Excel 2010

вот примерно того, чего хочется. Но я так как я не бум-бум, не могу понять принцип. Выпадающий могу сделать, но вот чтобы сохранить цвет ячейки? В чем секрет? Да и в этом методе есть тоже минус: помечается всего одна ячейка, мне же при выделении диапазона нужно одновременное окрашивание и без цифр. Просто цвет и все.

 

Ответить

Эх_Прорвёмся

Дата: Вторник, 01.12.2015, 11:57 |
Сообщение № 16

Группа: Заблокированные

Ранг: Участник

Сообщений: 72


Репутация:

-21

±

Замечаний:
100% ±


Excel 2003

вот примерно того, чего хочется.

Где?


Объяснять как бабушке на скамеечке у подъезда.

 

Ответить

foliant

Дата: Вторник, 01.12.2015, 12:17 |
Сообщение № 17

Группа: Пользователи

Ранг: Участник

Сообщений: 86


Репутация:

0

±

Замечаний:
40% ±


Excel 2010


не могу прикрепить — файл превышает допустимый размер. Ссылки на сторонние ресурсы разрешены?

 

Ответить

Эх_Прорвёмся

Дата: Вторник, 01.12.2015, 12:21 |
Сообщение № 18

Группа: Заблокированные

Ранг: Участник

Сообщений: 72


Репутация:

-21

±

Замечаний:
100% ±


Excel 2003

Ссылки на сторонние ресурсы разрешены?

А сократить файл? Ведь миллион строк и столбцов не надо. Сделайте несколько строк и столбцов, и покажите, что и как должно получиться в итоге.


Объяснять как бабушке на скамеечке у подъезда.

 

Ответить

foliant

Дата: Вторник, 01.12.2015, 12:23 |
Сообщение № 19

Группа: Пользователи

Ранг: Участник

Сообщений: 86


Репутация:

0

±

Замечаний:
40% ±


Excel 2010

защищен от изменений, не могу ничего сократить

 

Ответить

Эх_Прорвёмся

Дата: Вторник, 01.12.2015, 12:24 |
Сообщение № 20

Группа: Заблокированные

Ранг: Участник

Сообщений: 72


Репутация:

-21

±

Замечаний:
100% ±


Excel 2003


А зачем этот файл сокращать? Создайте СВОЙ, в который скопируйте часть данных из этого защищённого, и покажите что и как должно быть.


Объяснять как бабушке на скамеечке у подъезда.

 

Ответить

 

novomaster

Пользователь

Сообщений: 97
Регистрация: 19.06.2015

Активная ячейка (та, на которую нажали мышкой или просто перешли с помощью стрелочек, клавишей Enter и прочее) должна автоматически выделяться жёлтой заливкой и возвращаться к исходному виду, как только активной становится другая ячейка.
можно ли это сделать и как?
Зачем это нужно:
Когда у вас большая таблица, в ячейках которых похожие тексты, если не присматриваться, и вы, допустим, через поиск Cntrl+F что-то ищете, то найденный результат сложно бывает сразу увидеть, так как выделение ячейки не очень броское. Если же активная ячейка будет автоматически заливаться ярким цветом, то хватит доли секунды, чтобы взглядом найти её.
Буду благодарен всем, кто поможет или попытается!

 

vikttur

Пользователь

Сообщений: 47199
Регистрация: 15.09.2012

Ищите в Приемах этого сайта — координатное выделение

Вот что выдал поиск по сайту

 

Юрий М

Модератор

Сообщений: 60570
Регистрация: 14.09.2012

Контакты см. в профиле

#3

31.08.2015 22:48:10

В модуль листа:

Код
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    If Target.Cells.Count > 1 Then Exit Sub
    If Not Intersect(Target, Range("A1:D10")) Is Nothing Then
        Range("A1:D10").Cells.Interior.ColorIndex = xlNone
        Target.Interior.ColorIndex = 6
    End If
End Sub

Диапазон поменяйте под свои нужды.

 

novomaster

Пользователь

Сообщений: 97
Регистрация: 19.06.2015

vikttur, да, видел этот прием (

http://www.planetaexcel.ru/techniques/3/58/

), но он — не совсем то: там выделяется целая строка и целый столбец. В большой таблице и так не всё так быстро работает, поэтому лишнее торможение не на руку. Другое дело, если выделяется только одна ячейка

 

novomaster

Пользователь

Сообщений: 97
Регистрация: 19.06.2015

Юрий М, спасибо, завтра попробую. А если учесть, что таблица каждый день добавляется (добавляются строки, столбцы — нет), то выделить все строки, включая пустые до самого конца листа?

 

Юрий М

Модератор

Сообщений: 60570
Регистрация: 14.09.2012

Контакты см. в профиле

А в чем сложность вместо D10 написать, например, N1000?  ;)  Про «выделить» вообще не понял.

 

novomaster

Пользователь

Сообщений: 97
Регистрация: 19.06.2015

Юрий М, это я к тому, что не будет ли тормозить при таком диапазоне?

 

Юрий М

Модератор

Сообщений: 60570
Регистрация: 14.09.2012

Контакты см. в профиле

 

novomaster

Пользователь

Сообщений: 97
Регистрация: 19.06.2015

Юрий М, завтра попробую на работе )))) Сейчас просто с телефона сижу — на нём не создашь лист Excel :))

 

На случай, если на листе есть ячейки с заливкой
 

 

novomaster

Пользователь

Сообщений: 97
Регистрация: 19.06.2015

Юрий М, А куда код вставлять? Я делаю так: становлюсь на нужный лист, щелкаю на листе правой кнопкой, затем «исходный текст» — у меня открывается окно, где есть уже макрос один. Как правильно сделать?

 

novomaster

Пользователь

Сообщений: 97
Регистрация: 19.06.2015

Alexander88, спасибо, ваш вариант работает, но когда копирую макросы из ваших модулей и вставляю в свои — не работает ((

Изменено: novomaster01.09.2015 15:33:52

 

novomaster, Нужно скопировать с модуля книги и с обычного модуля (не забыв глобальные переменные вверху).
Заливку можно включать и выключать (есть макросы «вкл» и «выкл»)
В версиях моложе 2007 работать не будет скорее всего

Изменено: Alexander8801.09.2015 15:53:47

 

novomaster

Пользователь

Сообщений: 97
Регистрация: 19.06.2015

Alexander88, » (не забыв глобальные переменные вверху)» — это что за переменные?

 

Юрий М

Модератор

Сообщений: 60570
Регистрация: 14.09.2012

Контакты см. в профиле

#15

01.09.2015 16:38:30

Цитата
novomaster написал: у меня открывается окно, где есть уже макрос один

Делаете всё правильно, но нужно знать, что там за макрос у Вас — как он называется?

 

novomaster

Пользователь

Сообщений: 97
Регистрация: 19.06.2015

Юрий М, я в них уже запутался. Прикладываю скрин тех окошек, которые открываются, если нажать правой кнопкой мыши на названии листа >> «Исходный текст»

 

Юрий М

Модератор

Сообщений: 60570
Регистрация: 14.09.2012

Контакты см. в профиле

Если процедура Worksheet_SelectionChange УЖЕ имеется в листе, то нужно проверки делать внутри этой процедуры. Давайте Ваш файл — вставим прямо в него нужный фрагмент )

 

novomaster

Пользователь

Сообщений: 97
Регистрация: 19.06.2015

Юрий М, теперь завтра, уже с работы ушел, а файл там

 

novomaster

Пользователь

Сообщений: 97
Регистрация: 19.06.2015

Юрий М, прилагаю файл, только данные по клиентам удалил

 

novomaster

Пользователь

Сообщений: 97
Регистрация: 19.06.2015

Юрий М, там пароль 2080
Нужно, чтобы на листе «Клиенты» выделялись цветом ячейки в диапазоне (A8:J1048576)? желательно ядовито-жёлтой заливкой
P.S. Те макросы, которые я вчера в скриншоте выложил: подозреваю, что там какие-то модули появились после моей неудачной попытки вставить их из примера от Alexander88. Мои макросы там были следующие: «Clear», отвечающий за кнопку «Очистить фильтры» и макрос для расширенного фильтра (бледно-жёлтые ячейки в диапазоне (A2:L5). Вот эти макросы нужны, их удалять нельзя. А то, что я вчера неудачно добавил — можно удалить. (Вся эта тирада касается только листа «Клиенты», на других листах — не помню, есть нужные макросы или нет)

 

Gabi

Пользователь

Сообщений: 22
Регистрация: 31.08.2015

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

 
 

Юрий М

Модератор

Сообщений: 60570
Регистрация: 14.09.2012

Контакты см. в профиле

Добавил в модуль листа «Клиенты» свой вариант.

 

Юрий М

Модератор

Сообщений: 60570
Регистрация: 14.09.2012

Контакты см. в профиле

#24

02.09.2015 13:20:51

Цитата
Gabi написал:
чтобы по клику заливалась ячейка узором, и если снова кликнуть туда же, то заливка исчезала.

А если не возвращаться, то все ранее выделенные ячейки должны оставаться с этой заливкой?

 

novomaster

Пользователь

Сообщений: 97
Регистрация: 19.06.2015

Alexander88, супер! Всё отлично работает, даже лучше, чем я предполагал! Спасибо огромнейшее!!! :)

 

Юрий М

Модератор

Сообщений: 60570
Регистрация: 14.09.2012

Контакты см. в профиле

 

novomaster

Пользователь

Сообщений: 97
Регистрация: 19.06.2015

Юрий М, Ваш еще не видел, сейчас посмотрю ))

 

Gabi

Пользователь

Сообщений: 22
Регистрация: 31.08.2015

Юрий М, да, если не было повторного клика, то ячейка должна быть залита узором  :)  

 

novomaster

Пользователь

Сообщений: 97
Регистрация: 19.06.2015

Юрий М, у Вас тоже всё отлично работает, причём всё по заданным параметрам (лист, диапазон и т.д.), а у

Alexander88

— на всех листах и ячейках. Но это не плохо, может потом пригодится это выделение ячеек и на других листах. В общем, всем огромное спасибо!

 

Юрий М

Модератор

Сообщений: 60570
Регистрация: 14.09.2012

Контакты см. в профиле

#30

02.09.2015 14:49:35

Цитата
Gabi написал:
если не было повторного клика, то ячейка должна быть залита узором

См. файл.

Прикрепленные файлы

  • Заливка узором 01.xlsm (15.54 КБ)

Вы можете сделать это только через VBA. Вот некоторый код, который вы можете поместить в объект Sheet.

Private lastRange As Range

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    If Target.Address = Range("A1").Address Then
        If Not lastRange Is Nothing Then
            lastRange.Interior.Color = Range("A1").Interior.Color
        End If
    Else
       Set lastRange = Target
    End If
End Sub

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


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

Private lastRange As Range

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    If Target.Cells.Count = 1 Then
        If Not Intersect(Target, Range("A1:A5")) Is Nothing Then
            If Not lastRange Is Nothing Then
                lastRange.Interior.Color = Target.Interior.Color
                Exit Sub
            End If
        End If
    End If
    Set lastRange = Target
End Sub

Теперь есть целый ряд ячеек A1:A5 которые могут быть разных цветов. Если вы выберете одну ячейку в этом диапазоне, ваш предыдущий выбор будет иметь тот же цвет, что и текущая ячейка. Вы можете настроить диапазон A1:A5 , как вам нужно.


У меня есть одна странность, о которой я знаю: если вы выбираете диапазон, то фигура, а затем A1 , диапазон, который вы выбрали ранее, все еще сохраняется как lastRange . Это, наверное, нормально, но я не знаю, как вы используете.

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

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

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

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

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

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

=СТРОКА(B2)=АктивнаяСтрока

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

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

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

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

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

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

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

редактор VBA.

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
ActiveWorkbook.Names("АктивнаяСтрока").RefersTo = "=" & ActiveCell.Row
End Sub

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

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

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Not Intersect(Target, Range("B2:K23")) Is Nothing Then
ActiveWorkbook.Names("АктивнаяСтрока").RefersTo = "=" & ActiveCell.Column
End If
End Sub

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

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

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



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

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

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

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

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

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

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

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

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

Формат.

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

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

VBA-код.

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

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

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

Понравилась статья? Поделить с друзьями:
  • Excel при наведение курсора
  • Excel при наборе функции
  • Excel при курсоре двигается
  • Excel при курсоре двигает
  • Excel при копировании ячейки меняется формула