Содержание
- Выделение активной ячейки, строки или столбца
- Выделение активной ячейки
- Выделение всей строки и столбца, содержащих активную ячейку
- Выделение строки и столбца, содержащих активную ячейку, в текущей области
- Об участнике
- Поддержка и обратная связь
- Макрос для выделения и удаления пустых строк в Excel
- Как выделить все пустые строки макросом
- Макрос для удаления пустых строк
- Макрос для скрытия пустых строк
- Добавление строк макросом
- Выделить активную строку цветом в таблице Excel
- Подсветка строки в Excel цветом
- Принцип действия создания пользовательского курсора для таблицы
Выделение активной ячейки, строки или столбца
В следующих примерах кода показаны способы выделения активной ячейки или строк и столбцов, содержащих активную ячейку. В этих примерах используется событие SelectionChange объекта Worksheet.
Пример кода предоставил: Том Уртис, Atlas Programming Management
Выделение активной ячейки
В следующем примере кода показано, как удалить цвет во всех ячейках листа, присвоив свойству ColorIndex значение 0, а затем выделить активную ячейку, присвоив свойству ColorIndex значение 8 (бирюзовый).
Выделение всей строки и столбца, содержащих активную ячейку
В следующем примере кода показано, как удалить цвет во всех ячейках листа, присвоив свойству ColorIndex значение 0, а затем выделить всю строку и столбец, содержащие активную ячейку, с помощью свойств EntireRow и EntireColumn.
Выделение строки и столбца, содержащих активную ячейку, в текущей области
В следующем примере кода показано, как удалить цвет во всех ячейках листа, присвоив свойству ColorIndex значение 0, а затем в текущей области выделить строку и столбец, содержащие активную ячейку, используя свойство CurrentRegion объекта Range.
Об участнике
Том Уртис, MVP — основатель компании Atlas Programming Management, создающей полноценные бизнес-решения для Microsoft Office и Excel в Кремниевой долине. Том обладает больше чем 25 годами опыта управления бизнесом и разработки приложений для Microsoft Office, а также является соавтором книги «Holy Macro! It’s 2,500 Excel VBA Examples».
Поддержка и обратная связь
Есть вопросы или отзывы, касающиеся Office VBA или этой статьи? Руководство по другим способам получения поддержки и отправки отзывов см. в статье Поддержка Office VBA и обратная связь.
Источник
Макрос для выделения и удаления пустых строк в Excel
Исходные коды макросов для выделения, удаления, скрытия и добавления пустых строк в таблицу Excel по условию пользователя.
Как выделить все пустые строки макросом
Есть таблица годового бюджета, разделенная на отдельные группы статей расходов и кварталы. Каждая группа статей расходов разделена между собой пустыми строками:
Нам необходимо удалить все пустые строки в таблице. Для этого сначала необходимо их выделить. Если выделять вручную, то потребуется много времени и сил. Кроме того, нужно еще быть уверенным что строка действительно является пустой, чтобы вместе с ней не удалить важную информацию из бюджета или формулу. Для автоматического решения данной задачи лучше написать свой макрос, который сам проверит и выделит все пустые строки в таблице годового бюджета.
Откройте редактор Visual Basic (ALT+F11):
И воздайте в нем новый модуль для текущей книги «Insert»-«Module», а потом запишите в него следующий VBA-код макроса:
Sub SelectLine()
Dim i As Long
Dim diapaz1 As Range
Dim diapaz2 As Range
Set diapaz1 = Application.Range(ActiveSheet.Range( «A1» ), _
ActiveSheet.Cells.SpecialCells(xlCellTypeLastCell))
For i = 1 To diapaz1.Rows.Count
If WorksheetFunction.CountA(diapaz1.Rows(i).EntireRow) = 0 Then
If diapaz2 Is Nothing Then
Set diapaz2 = diapaz1.Rows(i).EntireRow
Else
Set diapaz2 = Application.Union(diapaz2, diapaz1.Rows(i).EntireRow)
End If
End If
Next
If diapaz2 Is Nothing Then
MsgBox «Ненайдено ниодной пустой строки!»
Else
diapaz2. Select
End If
End Sub
Теперь если нам нужно автоматически выделить все пустые строки в таблице бюджета перед тем как их удалить, выберите инструмент: «РАЗРАБОТЧИК»-«Код»-«Макросы»-«SelectLine»-«Выполнить». В результате выделяться все пустые ячейки только для пустых строк внутри исходной таблицы.
Пример работы первого VBA-кода:
Пустые строки, которые находиться под последними заполненными ячейками не будут выделены. Теперь для удаления выделенных строк пользователю осталось только выбрать инструмент: «ГЛАВНАЯ»-«Ячейки»-«Удалить»-«Удалить строки с листа». Или нажать комбинацию горячих клавиш CTRL+=. А после в появившемся окне «Удаление ячеек» выбрать опцию «строку» и нажать ОК.
Вначале кода присваиваем для переменной diapaz1 диапазон ячеек в границах между A1 и последней используемой ячейкой на рабочем листе Excel.
Примечание. Последняя используемая ячейка на листе — это любая ячейка для, которой были выполнены любые изменения: ввод значений, изменение формата границ или цвета фона и т.п.
Далее в цикле проверяются все строки в этом диапазоне, каждая по отдельности, на количество непустых ячеек. В том случаи если метод CountA возвращает значение 0, то адреса этих ячеек дополняют несмежный диапазон в переменной diapaz2 еще на одну пустую строку.
В конце макроса выделяются все пустые строки, находящиеся внутри диапазона определенным переменной diapaz2. Если же таблица не сдержит ни одной пустой строки, тогда выводиться соответственное сообщение.
Макрос для удаления пустых строк
Как удалить строку макросом? Если нужно сделать так чтобы макрос автоматически не только выделял, но и сам удалял пустые целые и смежные диапазоны ячеек без использования других инструментов, тогда в конце кода для переменной diapaz2.Select следует изменить метод на [Delete]:
Sub DelLine()
Dim i As Long
Dim diapaz1 As Range
Dim diapaz2 As Range
Set diapaz1 = Application.Range(ActiveSheet.Range( «A1» ), _
ActiveSheet.Cells.SpecialCells(xlCellTypeLastCell))
For i = 1 To diapaz1.Rows.Count
If WorksheetFunction.CountA(diapaz1.Rows(i).EntireRow) = 0 Then
If diapaz2 Is Nothing Then
Set diapaz2 = diapaz1.Rows(i).EntireRow
Else
Set diapaz2 = Application.Union(diapaz2, diapaz1.Rows(i).EntireRow)
End If
End If
Next
If diapaz2 Is Nothing Then
MsgBox «Ненайдено ниодной пустой строки!»
Else
diapaz2.[Delete]
End If
End Sub
Пример второго VBA-кода:
Макрос для скрытия пустых строк
Как скрыть пустые строки макросом? Но если вам нужно не удалить, а только скрыть (например, при подготовке документа на печать), тогда эту строку кода следует модифицировать несколько иначе:
Sub HidLine()
Dim i As Long
Dim diapaz1 As Range
Dim diapaz2 As Range
Set diapaz1 = Application.Range(ActiveSheet.Range( «A1» ), _
ActiveSheet.Cells.SpecialCells(xlCellTypeLastCell))
For i = 1 To diapaz1.Rows.Count
If WorksheetFunction.CountA(diapaz1.Rows(i).EntireRow) = 0 Then
If diapaz2 Is Nothing Then
Set diapaz2 = diapaz1.Rows(i).EntireRow
Else
Set diapaz2 = Application.Union(diapaz2, diapaz1.Rows(i).EntireRow)
End If
End If
Next
If diapaz2 Is Nothing Then
MsgBox «Ненайдено ниодной пустой строки!»
Else
diapaz2.EntireRow.Hidden = True
End If
End Sub
Пример третьего VBA-кода:
Добавление строк макросом
Как вставить строки макросом? Если мы изменим код в этом же месте как показано ниже, то получиться инструмент для добавления и вставки строк после пустых:
Sub AddLine()
Dim i As Long
Dim diapaz1 As Range
Dim diapaz2 As Range
Set diapaz1 = Application.Range(ActiveSheet.Range( «A1» ), _
ActiveSheet.Cells.SpecialCells(xlCellTypeLastCell))
For i = 1 To diapaz1.Rows.Count
If WorksheetFunction.CountA(diapaz1.Rows(i).EntireRow) = 0 Then
If diapaz2 Is Nothing Then
Set diapaz2 = diapaz1.Rows(i).EntireRow
Else
Set diapaz2 = Application.Union(diapaz2, diapaz1.Rows(i).EntireRow)
End If
End If
Next
If diapaz2 Is Nothing Then
MsgBox «Ненайдено ниодной пустой строки!»
Else
diapaz2.[Insert]
End If
End Sub
Пример четвертого VBA-кода:
Если же вы хотите, чтобы макрос работал исключительно только для пустых строк предварительно выделенного определенного диапазона листа перед запуском макроса, то в начале макроса следует изменить строку создания экземпляра объекта для переменной diapaz1, на:
Set diapaz1 = Selection
Внимание! Следует помнить о том, что если таким образом создавать экземпляр объекта для переменной diapaz1, то тогда нельзя перед запуском макроса выделять все ячейки листа или все ячейки любого столбца. Иначе это затормозит программу Excel, так как один лист содержит аж 1 048 576 строк и тогда они все будут обрабатываться макросом, а пользователь будет ждать.
Источник
Выделить активную строку цветом в таблице Excel
Когда приходится работать с большим объемом данных в Excel, где строки сильно растянуты и не умещаются в один экран, сложно сравнить значения в одной и той же строке. Постоянно приходится передвигать горизонтальную полосу прокрутки. Работа была бы более удобной если бы целая активная строка была бы выделена цветом – как курсор на целую строку. Чтобы выделить активную строку или столбец цветом, создадим свою функцию в Excel с помощью макроса и с комбинируем ее с условным форматированием.
Подсветка строки в Excel цветом
Чтобы создать свой широкий курсов на целую строку в Excel, необходимо создать макрос и использовать его вместе с условным форматированием. Для примера создадим таблицу с широкими строками и большим количеством столбцов. Нам нужно выделить строку цветом по условию Excel. Например, если активная ячейка находится в строке 2, тогда выделить цветом всю строку 2 (в пределах таблицы или на весь лист). Для примера создадим таблицу с широкими строками и большим количеством столбцов:
Подсветка текущей строки в Excel цветом:
- Откройте редактор VBA для этого выберите инструмент: «РАЗРАБОТЧИК»-«Код»-«Visual Basic». Или нажмите комбинацию горячих клавиш ALT+F11.
- В правом окне к активному проекту добавьте новый модуль. Для того в редакторе VBA выберите опцию: «Insert»-«Module»
- В окне модуля вставьте этот VBA-код макроса:
- Не закрывая окно VBA-редактора перейдите на рабочий лист с исходной таблицей. Выделите целую вторую строку таблицы A2:H2 и выберите инструмент: «ГЛАВНАЯ»-«Условное форматирование»-«Создать правило»-«Использовать формулу для определения форматированных ячеек:».
- В полю ввода введите формулу:
- Щелкните по кнопке «Формат» и на вкладке «Заливка» укажите зеленый цвет. На всех окнах жмем ОК.
- Скопируйте вторую строку таблицы.
- Выделите остальные строки и выберите инструмент: «ГЛАВНАЯ»-«Вставить»-«Специальная вставка»-«Форматы» (или нажмите комбинацию клавиш CTRL+ALT+V, потом отметить форматы и нажать ОК). Или воспользуйтесь инструментом: «ГЛАВНАЯ»-«Буфер обмена»-«Формат по образцу».
- Вернитесь к редактору VBA и в окне «Project» дважды щелкните по «Лист1». В появившемся окне вставьте следующий VBA-код макроса:
- Сохраните и закройте редактор VBA.
В результате происходит выделение строки условным форматированием только там, где находится активная ячейка. Эффект широкого курсора таблицы для комфортного просмотра данных с большим объемом информации. Сделав активной любую ячейку таблицы и сразу же выделяется цветом строка в которой находится данная ячейка.
Полезный вопрос! А как же выделить активный столбец цветом? Аналогичным методом реализовывается с помощью макроса не только подсветка цветом активной строки, но и столбца. Для этого:
- В модуль где находится код подсветки строки VBA-макроса, добавим код новой функции АктивныйСтолбец:
- Добавим новое правило в условном форматировании для нашей таблицы в диапазоне A1:A7. Теперь в новом правиле пишем функцию АктивныйСтолбец(), а вместо функции СТРОКА – СТОЛБЕЦ. И указываем синий цвет форматирования заливки ячейки.
- Проверим все созданные правила для таблицы. Перейдите в ячейку A2 и ввыберите инструмент: «ГЛАВНАЯ»-«Условное форматирование»-«Управление правилами». Диспетчер правил условного форматирования должен выглядеть так:
- Скопируйте формат столбца A1:A7 в остальные столбцы таблицы диапазона B1:H7. Например, с помощью инструмента: «ГЛАВНАЯ»-«Буфер обмена»-«Формат по образцу».
- Результат превышает ожидания. Идеальный курсор для просмотра огромных таблиц с большим количеством данных на множестве строк и столбцов:
Принцип действия создания пользовательского курсора для таблицы
Применяемая в условном форматировании созданная нами функция VBA =АктивнаяСтрока() позволяет нам получить номер текущей строки в которой стала активной любая из ее ячеек. Результат вычисления пользовательской функции =АктивнаяСтрока() сравнивается с результатом функции =СТРОКА(), которая также возвращает номер текущей строки в данном моменте вычисления условного форматирования.
Так как обе функции выполняются при активной ячейке в одной и той же строке их значения равны между собой и возвращают общее логическое значение ИСТИНА. В результате чего происходит выделение строки цветом по условию. Если значение ИСТИНА, тогда присваивается формат цвета для целой активной строки таблицы.
Источник
! Знаю ячейку, а как выделить всю строку?
- GAL
- Обычный пользователь
- Сообщения: 69
- Зарегистрирован: 05.11.2004 (Пт) 15:57
! Знаю ячейку, а как выделить всю строку?
Привет!
Люди, подскажите, пожалуйста..
Как выделить строку если я знаю ячейку в этой строке?
Заранее большое спасибо.
- uhm
- Продвинутый гуру
- Сообщения: 1597
- Зарегистрирован: 02.12.2004 (Чт) 15:21
uhm » 06.04.2005 (Ср) 10:38
Rows(номер_строки).Select
Если в строке есть ячейки, объединенные с другими строками, выделится несколько строк.
- GAL
- Обычный пользователь
-
- Сообщения: 69
- Зарегистрирован: 05.11.2004 (Пт) 15:57
GAL » 06.04.2005 (Ср) 10:49
Я не знаю номер строки.
Я немогу явно указать номер этой строки.
У меня в макросе запускается поиск, нахожу ячейку с таким-то содержимым и мне нужно выделить строку содержащую эту ячейку.
Есть такая возможность?
- GAL
- Обычный пользователь
- Сообщения: 69
- Зарегистрирован: 05.11.2004 (Пт) 15:57
GAL » 06.04.2005 (Ср) 10:52
Я незнаю номер строки.
Я немогу указать его явно.
У меня макрос ищет ячейку с таким-то содержимым и когда найдет мне нужно выделить строку содержащую эту ячейку.
Есть такая возможность?
- uhm
- Продвинутый гуру
-
- Сообщения: 1597
- Зарегистрирован: 02.12.2004 (Чт) 15:21
uhm » 06.04.2005 (Ср) 10:53
Да, если x — это твоя найденная ячейка, то она содержится в столбце x.Column и в строке x.Row. Соответственно, можешь выделить строку так:
Rows(x.Row).Select
- GAL
- Обычный пользователь
- Сообщения: 69
- Зарегистрирован: 05.11.2004 (Пт) 15:57
GAL » 06.04.2005 (Ср) 11:03
Да, так получилось.
Спасибо uhm!
- GSerg
- Шаман
- Сообщения: 14286
- Зарегистрирован: 14.12.2002 (Сб) 5:25
- Откуда: Магадан
GSerg » 06.04.2005 (Ср) 12:51
x.entirerow.select
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас
Вернуться в VBA
Кто сейчас на конференции
Сейчас этот форум просматривают: Google-бот и гости: 1
0 / 0 / 0 Регистрация: 08.06.2016 Сообщений: 2 |
|
1 |
|
Выделение всей строки по условию26.06.2016, 14:20. Показов 14002. Ответов 9
Доброго времени суток.
0 |
Burk 1811 / 1134 / 345 Регистрация: 11.07.2014 Сообщений: 3,999 |
||||
26.06.2016, 15:49 |
2 |
|||
eQyes, вы это тоже можете, включив запись макроса в меню СЕРВИС (2003) или Разработчик(2007). Затем делаете вручную, нужные вам действия. Затем ОСТАНОВИТЬ ЗАПИСЬ и в макросах смотрите, сформированный экселем макрос. Пользуйтесь этим почаще быстрее научитесь делать такие простые вещи самостоятельно. А пока получите макрос. Считаем, что «недвижимость» в первом столбце.
0 |
МВТ 45 / 45 / 15 Регистрация: 14.04.2016 Сообщений: 128 |
||||
26.06.2016, 17:05 |
3 |
|||
Burk, на значительных объемах применение массивов даст существенную прибавку в скорости
0 |
4131 / 2235 / 940 Регистрация: 01.12.2010 Сообщений: 4,624 |
|
26.06.2016, 17:55 |
4 |
МВТ, На значительном количестве ячеек, содержащих искомый текст, такой подход приведёт к возникновению ошибки, ибо Len(s) не должна превышать 255 символов.
0 |
45 / 45 / 15 Регистрация: 14.04.2016 Сообщений: 128 |
|
26.06.2016, 18:22 |
5 |
pashulka, да, что-то не подумал . Спасибо за замечание. Как вариант, можно в коллекцию строки собирать, все равно должно быть значительно быстрее, чем поячеечно перебирать данные или даже использовать Union
0 |
pashulka 4131 / 2235 / 940 Регистрация: 01.12.2010 Сообщений: 4,624 |
||||
26.06.2016, 18:40 |
6 |
|||
Если из 40000 — 10000 ячеек будут с недвижимостью, то тут Union не самый лучший вариант, а если 100, то можно его и помучить P.S. Кстати, при переборе ячеек не лишним будет использовать :
1 |
МВТ 45 / 45 / 15 Регистрация: 14.04.2016 Сообщений: 128 |
||||||||
26.06.2016, 20:04 |
7 |
|||||||
pashulka, пардон, код не прикрепил
Добавлено через 1 час 21 минуту
0 |
snipe 4038 / 1423 / 394 Регистрация: 07.08.2013 Сообщений: 3,541 |
||||
27.06.2016, 03:40 |
8 |
|||
а просто макрос записать макрорекордером не пробовали
0 |
1811 / 1134 / 345 Регистрация: 11.07.2014 Сообщений: 3,999 |
|
27.06.2016, 07:30 |
9 |
Господа, вы рассуждаете о такой пустяковой задаче, как о проблеме века. Судя по всему, автор темы мало чего знает о VBA и, когда я пишу ответы на вопрос, то стараюсь наметить возможные пути (далеко не все) для решения задачи и достаточно простые, надеясь, что это станет толчком к самостоятельным действиям автора. Я думаю, что сейчас он оценивает ваши алгоритмы с точки зрения «работает-не работает». А у вас этот «пустячок» как зеркало, чтобы полюбоваться на себя. Алгоритмы мне понравились, надеюсь, что и автор темы в них разберётся. С наилучшими пожеланиями. Burk
0 |
6875 / 2807 / 533 Регистрация: 19.10.2012 Сообщений: 8,562 |
|
27.06.2016, 08:38 |
10 |
del, уже реализовано
0 |
Если у вас большой рабочий лист с несколькими столбцами, вам будет сложно различить данные в этой строке. В этом случае вы можете выделить всю строку активной ячейки, чтобы вы могли быстро и легко просмотреть данные в этой строке при прокрутке вниз горизонтальной полосы прокрутки. В этой статье я расскажу о некоторых трюках, которые помогут вам решить эту проблему. .
Выделите всю строку при прокрутке с помощью кода VBA
Выделите всю строку / столбец / строку и столбец при прокрутке с помощью Kutools for Excel
Следующий код VBA может помочь вам динамически выделить строку выбранной ячейки, пожалуйста, сделайте следующее:
1. Активируйте рабочий лист, на котором вы хотите выделить всю строку выбранной ячейки, а затем щелкните правой кнопкой мыши вкладку листа и выберите Просмотреть код из контекстного меню, см. снимок экрана:
2. В открытом Microsoft Visual Basic для приложений окна, скопируйте следующий код в этот пустой модуль:
Код VBA: выделять всю строку при прокрутке
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
'Updateby Extendoffice
Cells.Interior.ColorIndex = 0
Target.EntireRow.Interior.ColorIndex = 8
End Sub
3. Затем сохраните и закройте этот код, теперь, когда вы щелкаете ячейку, вся строка этой выбранной ячейки будет выделена, как показано на следующих снимках экрана:
Ноты:
1. Вы можете изменить цвет выделения на другой, который вам нравится в этом скрипте «Цель.EntireRow.Interior.ColorIndex = 8”, Измените номер 8 к другому цветному индексу.
2. Если вы хотите отключить этот код, вам просто нужно перейти в Microsoft Visual Basic для приложений окно и удалите код.
3. Этот код также может выделять строки выбранного диапазона ячеек в следующем результате:
4. Этот код применяется только к текущему листу.
5. Если на вашем листе есть несколько цветных ячеек, при применении этого кода цвет ячеек будет потерян.
Если вы хотите попробовать новый инструмент — Kutools for Excel, С его Макет для чтения, вы можете легко выделить всю строку или весь столбец либо строку и столбец активной ячейки.
После установки Kutools for Excel, выполните следующие действия:
1. Выберите ячейку или диапазон ячеек, в которых вы хотите выделить строки.
2. Нажмите Кутулс > Макет для чтения раскрывающаяся кнопка> Чтение настроек макета, см. снимок экрана:
3. В Чтение настроек макета диалоговом окне выберите один тип, который вам нужно выделить строку или столбец под Формы раздел, а затем укажите стиль этой формы, в то же время вы можете выбрать другие параметры, такие как цвет или прозрачность, как вам нужно, см. снимок экрана:
Tips: Если вы хотите выделить строку и столбец выбранной ячейки, выберите Крест-накрест под Формы , и выберите Вертикальная линия чтобы выделить весь столбец активной ячейки.
4. После завершения настроек в диалоговом окне нажмите Ok, и теперь, когда вы щелкаете ячейку, вся строка будет выделена сразу. И он будет динамически перемещаться по мере изменения выбранных ячеек.
Ноты:
1. Вы можете отменить эту утилиту, сняв флажок Макет для чтения снова.
2. Это Макет для чтения Эта функция применяется ко всем листам в вашей книге.
3. Это Макет для чтения функция будет отключена при следующем запуске книги.
4. С помощью этой утилиты ваша цветная ячейка будет сохранена.
Щелкните, чтобы узнать больше об этом макете чтения.
Скачать и бесплатную пробную версию 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% и сокращает количество щелчков мышью на сотни каждый день!
title | ms.prod | ms.assetid | ms.date |
---|---|---|---|
Highlight the Active Cell, Row, or Column |
excel |
51a30ffb-77f2-4bd7-8eb6-b6781dc55d43 |
06/08/2017 |
Highlight the Active Cell, Row, or Column
The following code examples show ways to highlight the active cell or the rows and columns that contain the active cell. These examples use the SelectionChange event of the Worksheet object.
Sample code provided by: Tom Urtis, Atlas Programming Management
Highlighting the Active Cell
The following code example clears the color in all the cells on the worksheet by setting the ColorIndex property equal to 0, and then highlights the active cell by setting the ColorIndex property equal to 8 (Turquoise).
Private Sub Worksheet_SelectionChange(ByVal Target As Range) Application.ScreenUpdating = False ' Clear the color of all the cells Cells.Interior.ColorIndex = 0 ' Highlight the active cell Target.Interior.ColorIndex = 8 Application.ScreenUpdating = True End Sub
Highlighting the Entire Row and Column that Contain the Active Cell
The following code example clears the color in all the cells on the worksheet by setting the ColorIndex property equal to 0, and then highlights the entire row and column that contain the active cell by using the EntireRow and EntireColumn properties.
Private Sub Worksheet_SelectionChange(ByVal Target As Range) If Target.Cells.Count > 1 Then Exit Sub Application.ScreenUpdating = False ' Clear the color of all the cells Cells.Interior.ColorIndex = 0 With Target ' Highlight the entire row and column that contain the active cell .EntireRow.Interior.ColorIndex = 8 .EntireColumn.Interior.ColorIndex = 8 End With Application.ScreenUpdating = True End Sub
Highlighting the Row and Column that Contain the Active Cell, Within the Current Region
The following code example clears the color in all the cells on the worksheet by setting the ColorIndex property equal to 0, and then highlights the row and column that contain the active cell, within the current region by using the CurrentRegion property of the Range object.
Private Sub Worksheet_SelectionChange(ByVal Target As Range) ' Clear the color of all the cells Cells.Interior.ColorIndex = 0 If IsEmpty(Target) Or Target.Cells.Count > 1 Then Exit Sub Application.ScreenUpdating = False With ActiveCell ' Highlight the row and column that contain the active cell, within the current region Range(Cells(.Row, .CurrentRegion.Column), Cells(.Row, .CurrentRegion.Columns.Count + .CurrentRegion.Column - 1)).Interior.ColorIndex = 8 Range(Cells(.CurrentRegion.Row, .Column), Cells(.CurrentRegion.Rows.Count + .CurrentRegion.Row - 1, .Column)).Interior.ColorIndex = 8 End With Application.ScreenUpdating = True End Sub
About the Contributor
MVP Tom Urtis is the founder of Atlas Programming Management, a full-service Microsoft Office and Excel business solutions company in Silicon Valley. Tom has over 25 years of experience in business management and developing Microsoft Office applications, and is the coauthor of «Holy Macro! It’s 2,500 Excel VBA Examples.»
You can use the following methods in VBA to highlight rows:
Method 1: Highlight Active Row
Sub HighlightActiveRow()
ActiveCell.EntireRow.Interior.Color = vbYellow
End Sub
This particular macro will highlight the currently active row.
Method 2: Highlight Specific Row
Sub HighlightSpecificRow()
Rows("4:4").Interior.Color = vbYellow
End Sub
This particular macro will highlight row 4 in the current sheet.
Method 3: Highlight Several Specific Rows
Sub HighlightSpecificRows()
Range("2:2,4:4,6:6,8:8").Interior.Color = vbYellow
End Sub
This particular macro will highlight rows 2, 4, 6, and 8 in the current sheet.
Note: To highlight all rows between 2 and 8, you can type Range(“2:8”) instead.
The following examples show how to use each method in practice.
Example 1: Highlight Active Row
Suppose we currently have cell B3 selected.
We can create the following macro to highlight each cell in the currently active row
Sub HighlightActiveRow()
ActiveCell.EntireRow.Interior.Color = vbYellow
End Sub
When we run this macro, we receive the following output:
Notice that each cell in row three is highlighted and all other rows are simply left untouched.
Example 2: Highlight Specific Row
Suppose we would like to highlight row four only.
We can create the following macro to do so:
Sub HighlightSpecificRow()
Rows("4:4").Interior.Color = vbYellow
End Sub
When we run this macro, we receive the following output:
Notice that each cell in row four is highlighted and all other rows are simply left untouched.
Example 3: Highlight Several Specific Rows
Suppose we would like to highlight rows 2, 4, 6, and 8 in the current sheet.
We can create the following macro to do so:
Sub HighlightSpecificRows()
Range("2:2,4:4,6:6,8:8").Interior.Color = vbYellow
End Sub
When we run this macro, we receive the following output:
Notice that rows 2, 4, 6, and 8 are all highlighted and all other rows are left untouched.
Note: In each example we chose to use yellow (vbYellow) as the highlight color, but you can choose a different color such as vbRed, vbGreen, vbBlue, etc.
Additional Resources
The following tutorials explain how to perform other common tasks in VBA:
VBA: How to Highlight Cells
VBA: How to Apply Conditional Formatting to Cells
VBA: How to Apply Conditional Formatting to Duplicate Values