В этой статье будут показаны некоторые методы изменения цвета ячейки при нажатии на ячейку и изменение выделенного цвета при выборе диапазона ячеек в 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-дневная гарантия возврата денег.
Вкладка Office: интерфейс с вкладками в Office и упрощение работы
- Включение редактирования и чтения с вкладками в Word, Excel, PowerPoint, Издатель, доступ, Visio и проект.
- Открывайте и создавайте несколько документов на новых вкладках одного окна, а не в новых окнах.
- Повышает вашу продуктивность на 50% и сокращает количество щелчков мышью на сотни каждый день!
Выбор цвета ячейки по нажатию на нее. |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
novomaster Пользователь Сообщений: 97 |
Активная ячейка (та, на которую нажали мышкой или просто перешли с помощью стрелочек, клавишей Enter и прочее) должна автоматически выделяться жёлтой заливкой и возвращаться к исходному виду, как только активной становится другая ячейка. |
vikttur Пользователь Сообщений: 47199 |
Ищите в Приемах этого сайта — координатное выделение Вот что выдал поиск по сайту |
Юрий М Модератор Сообщений: 60570 Контакты см. в профиле |
#3 31.08.2015 22:48:10 В модуль листа:
Диапазон поменяйте под свои нужды. |
||
novomaster Пользователь Сообщений: 97 |
vikttur, да, видел этот прием ( http://www.planetaexcel.ru/techniques/3/58/ ), но он — не совсем то: там выделяется целая строка и целый столбец. В большой таблице и так не всё так быстро работает, поэтому лишнее торможение не на руку. Другое дело, если выделяется только одна ячейка |
novomaster Пользователь Сообщений: 97 |
Юрий М, спасибо, завтра попробую. А если учесть, что таблица каждый день добавляется (добавляются строки, столбцы — нет), то выделить все строки, включая пустые до самого конца листа? |
Юрий М Модератор Сообщений: 60570 Контакты см. в профиле |
А в чем сложность вместо D10 написать, например, N1000? |
novomaster Пользователь Сообщений: 97 |
Юрий М, это я к тому, что не будет ли тормозить при таком диапазоне? |
Юрий М Модератор Сообщений: 60570 Контакты см. в профиле |
|
novomaster Пользователь Сообщений: 97 |
Юрий М, завтра попробую на работе )))) Сейчас просто с телефона сижу — на нём не создашь лист Excel |
На случай, если на листе есть ячейки с заливкой |
|
novomaster Пользователь Сообщений: 97 |
Юрий М, А куда код вставлять? Я делаю так: становлюсь на нужный лист, щелкаю на листе правой кнопкой, затем «исходный текст» — у меня открывается окно, где есть уже макрос один. Как правильно сделать? |
novomaster Пользователь Сообщений: 97 |
Alexander88, спасибо, ваш вариант работает, но когда копирую макросы из ваших модулей и вставляю в свои — не работает (( Изменено: novomaster — 01.09.2015 15:33:52 |
novomaster, Нужно скопировать с модуля книги и с обычного модуля (не забыв глобальные переменные вверху). Изменено: Alexander88 — 01.09.2015 15:53:47 |
|
novomaster Пользователь Сообщений: 97 |
Alexander88, » (не забыв глобальные переменные вверху)» — это что за переменные? |
Юрий М Модератор Сообщений: 60570 Контакты см. в профиле |
#15 01.09.2015 16:38:30
Делаете всё правильно, но нужно знать, что там за макрос у Вас — как он называется? |
||
novomaster Пользователь Сообщений: 97 |
Юрий М, я в них уже запутался. Прикладываю скрин тех окошек, которые открываются, если нажать правой кнопкой мыши на названии листа >> «Исходный текст» |
Юрий М Модератор Сообщений: 60570 Контакты см. в профиле |
Если процедура Worksheet_SelectionChange УЖЕ имеется в листе, то нужно проверки делать внутри этой процедуры. Давайте Ваш файл — вставим прямо в него нужный фрагмент ) |
novomaster Пользователь Сообщений: 97 |
Юрий М, теперь завтра, уже с работы ушел, а файл там |
novomaster Пользователь Сообщений: 97 |
Юрий М, прилагаю файл, только данные по клиентам удалил |
novomaster Пользователь Сообщений: 97 |
Юрий М, там пароль 2080 |
Gabi Пользователь Сообщений: 22 |
Подскажите пожалуйста, как сделать так, чтобы по клику заливалась ячейка узором, и если снова кликнуть туда же, то заливка исчезала. |
Юрий М Модератор Сообщений: 60570 Контакты см. в профиле |
Добавил в модуль листа «Клиенты» свой вариант. |
Юрий М Модератор Сообщений: 60570 Контакты см. в профиле |
#24 02.09.2015 13:20:51
А если не возвращаться, то все ранее выделенные ячейки должны оставаться с этой заливкой? |
||
novomaster Пользователь Сообщений: 97 |
Alexander88, супер! Всё отлично работает, даже лучше, чем я предполагал! Спасибо огромнейшее!!! |
Юрий М Модератор Сообщений: 60570 Контакты см. в профиле |
|
novomaster Пользователь Сообщений: 97 |
Юрий М, Ваш еще не видел, сейчас посмотрю )) |
Gabi Пользователь Сообщений: 22 |
Юрий М, да, если не было повторного клика, то ячейка должна быть залита узором |
novomaster Пользователь Сообщений: 97 |
Юрий М, у Вас тоже всё отлично работает, причём всё по заданным параметрам (лист, диапазон и т.д.), а у Alexander88 — на всех листах и ячейках. Но это не плохо, может потом пригодится это выделение ячеек и на других листах. В общем, всем огромное спасибо! |
Юрий М Модератор Сообщений: 60570 Контакты см. в профиле |
#30 02.09.2015 14:49:35
См. файл. Прикрепленные файлы
|
||
Вы можете сделать это только через 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»), в котором вы хотите подсвечивать любые строки и где создано условное форматирование, введите код:
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 простых изменения в любом из примеров:
- В условном форматировании заменить функцию СТРОКА на СТОЛБЕЦ.
- Изменить в коде VBA-макроса свойство ActiveCell.Row на ActiveCell.Column.
Примечание. Имя исходного диапазона ячеек «АктивнаяСтрока» можно не изменять и оставить прежним как есть.
Решение изменения 1: Выберите инструмент «ГЛАВНАЯ»-«Стили»-«Условное форматирование»-«Управление правилами»:
В появившемся окне «Диспетчер правил условного форматирования» выберите правило и нажмите на кнопку «Изменить правило»:
Изменяем функцию, вносим желаемые стили оформления формата, которые доступны нам по кнопке «Формат»:
И нажимаем ОК на всех открытых окнах.
Решение изменения 2: Открываем редактор VBA-кода и изменяем только лишь одно свойство для объекта ActiveCell с Row на Column:
Наслаждаемся готовым желаемым результатом:
Аналогичные действия следует выполнить и для примера 2, если там есть необходимость подсвечивать цветом столбец, а не строку на целом листе Excel.