Excel макрос как выделить всю строку

Содержание

  1. Выделение активной ячейки, строки или столбца
  2. Выделение активной ячейки
  3. Выделение всей строки и столбца, содержащих активную ячейку
  4. Выделение строки и столбца, содержащих активную ячейку, в текущей области
  5. Об участнике
  6. Поддержка и обратная связь
  7. Макрос для выделения и удаления пустых строк в Excel
  8. Как выделить все пустые строки макросом
  9. Макрос для удаления пустых строк
  10. Макрос для скрытия пустых строк
  11. Добавление строк макросом
  12. Выделить активную строку цветом в таблице Excel
  13. Подсветка строки в Excel цветом
  14. Принцип действия создания пользовательского курсора для таблицы

Выделение активной ячейки, строки или столбца

В следующих примерах кода показаны способы выделения активной ячейки или строк и столбцов, содержащих активную ячейку. В этих примерах используется событие 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 цветом:

  1. Откройте редактор VBA для этого выберите инструмент: «РАЗРАБОТЧИК»-«Код»-«Visual Basic». Или нажмите комбинацию горячих клавиш ALT+F11.
  2. В правом окне к активному проекту добавьте новый модуль. Для того в редакторе VBA выберите опцию: «Insert»-«Module»
  3. В окне модуля вставьте этот VBA-код макроса:
  4. Не закрывая окно VBA-редактора перейдите на рабочий лист с исходной таблицей. Выделите целую вторую строку таблицы A2:H2 и выберите инструмент: «ГЛАВНАЯ»-«Условное форматирование»-«Создать правило»-«Использовать формулу для определения форматированных ячеек:».
  5. В полю ввода введите формулу:
  6. Щелкните по кнопке «Формат» и на вкладке «Заливка» укажите зеленый цвет. На всех окнах жмем ОК.
  7. Скопируйте вторую строку таблицы.
  8. Выделите остальные строки и выберите инструмент: «ГЛАВНАЯ»-«Вставить»-«Специальная вставка»-«Форматы» (или нажмите комбинацию клавиш CTRL+ALT+V, потом отметить форматы и нажать ОК). Или воспользуйтесь инструментом: «ГЛАВНАЯ»-«Буфер обмена»-«Формат по образцу».
  9. Вернитесь к редактору VBA и в окне «Project» дважды щелкните по «Лист1». В появившемся окне вставьте следующий VBA-код макроса:
  10. Сохраните и закройте редактор VBA.

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

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

  1. В модуль где находится код подсветки строки VBA-макроса, добавим код новой функции АктивныйСтолбец:
  2. Добавим новое правило в условном форматировании для нашей таблицы в диапазоне A1:A7. Теперь в новом правиле пишем функцию АктивныйСтолбец(), а вместо функции СТРОКА – СТОЛБЕЦ. И указываем синий цвет форматирования заливки ячейки.
  3. Проверим все созданные правила для таблицы. Перейдите в ячейку A2 и ввыберите инструмент: «ГЛАВНАЯ»-«Условное форматирование»-«Управление правилами». Диспетчер правил условного форматирования должен выглядеть так:
  4. Скопируйте формат столбца A1:A7 в остальные столбцы таблицы диапазона B1:H7. Например, с помощью инструмента: «ГЛАВНАЯ»-«Буфер обмена»-«Формат по образцу».
  5. Результат превышает ожидания. Идеальный курсор для просмотра огромных таблиц с большим количеством данных на множестве строк и столбцов:

Принцип действия создания пользовательского курсора для таблицы

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

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

Источник

! Знаю ячейку, а как выделить всю строку?

GAL
Обычный пользователь
Обычный пользователь
Аватара пользователя

 
Сообщения: 69
Зарегистрирован: 05.11.2004 (Пт) 15:57

! Знаю ячейку, а как выделить всю строку?

Привет!

Люди, подскажите, пожалуйста.. :wink:

Как выделить строку если я знаю ячейку в этой строке?

Заранее большое спасибо.


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


Студворк — интернет-сервис помощи студентам

Доброго времени суток.
Может кто-нибудь написать макрос для заливки целой строки по условию?
Имеем таблицу, к примеру из 40 тысяч строк. Необходимо выполнить поиск по слову «недвижимость». Залить красным цветом все строки, где встретиться искомое слово. Заранее спасибо. Либо, может это можно как-то с помощью УФ выполнить. Выручите, пожалуйста.



0



Burk

1811 / 1134 / 345

Регистрация: 11.07.2014

Сообщений: 3,999

26.06.2016, 15:49

2

eQyes, вы это тоже можете, включив запись макроса в меню СЕРВИС (2003) или Разработчик(2007). Затем делаете вручную, нужные вам действия. Затем ОСТАНОВИТЬ ЗАПИСЬ и в макросах смотрите, сформированный экселем макрос. Пользуйтесь этим почаще быстрее научитесь делать такие простые вещи самостоятельно. А пока получите макрос. Считаем, что «недвижимость» в первом столбце.

PureBasic
1
2
3
4
5
6
7
8
9
10
11
12
13
Sub RedBull()
 
' Макрос1 Макрос'
' Макрос записан 26.06.2016 (Burk)'
 
 
Dim I As Long
I = 1
Do While Cells(I, 1) <> ""
  If InStr(LCase(Cells(I, 1)), "недвижимость") > 0 Then Rows(I).Interior.ColorIndex = 3
  I = I + 1
Loop
End Sub



0



МВТ

45 / 45 / 15

Регистрация: 14.04.2016

Сообщений: 128

26.06.2016, 17:05

3

Burk, на значительных объемах применение массивов даст существенную прибавку в скорости

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
Sub tt()
    Dim arr(), i As Long, s As String, LRow
    LRow = Cells(Rows.Count, "A").End(xlUp).Row
    If LRow = 1 Then If IsEmpty(Range("A1")) Then Exit Sub
    arr = Range("A1:A" & LRow).Value
    For i = 1 To UBound(arr)
        If StrComp(arr(i, 1), "íåäâèæèìîñòü", vbTextCompare) = 0 Then
            If Len(s) = 0 Then s = "A" & i Else s = s & ",A" & i
        End If
    Next
    If Len(s) > 0 Then Range(s).EntireRow.Interior.Color = vbRed
End Sub



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. Кстати, при переборе

ячеек

не лишним будет использовать :

Visual Basic
1
2
3
Application.ScreenUpdating = False
 
Application.ScreenUpdating = True



1



МВТ

45 / 45 / 15

Регистрация: 14.04.2016

Сообщений: 128

26.06.2016, 20:04

7

pashulka, пардон, код не прикрепил

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
Sub tt()
    Dim arr(), i As Long, s As String, LRow As Long, Col As New Collection
    Application.ScreenUpdating = False
    LRow = Cells(Rows.Count, "A").End(xlUp).Row
    If LRow = 1 Then If IsEmpty(Range("A1")) Then Exit Sub
    arr = Range("A1:A" & LRow).Value
    For i = 1 To UBound(arr)
        If StrComp(arr(i, 1), "выбор", vbTextCompare) = 0 Then
            If Len(s) = 0 Then s = "A" & i Else s = s & ",A" & i
            If Len(s) > 47 Then
                Col.Add (s)
                s = ""
            End If
            If Len(s) > 0 Then Col.Add (s)
        End If
    Next
    If Col.Count = 0 Then Exit Sub
    For i = 1 To Col.Count
        Range(Col(i)).EntireRow.Interior.Color = vbRed
    Next
    Application.ScreenUpdating = False
End Sub

Добавлено через 1 час 21 минуту
Благодаря замечаниям уважаемого pashulka были выявлены несколько досадных неточностей в коде. Прикладываю исправленный вариант

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
Sub tt()
    Dim arr(), i As Long, s As String, LRow As Long, Col As New Collection
    LRow = Cells(Rows.Count, "A").End(xlUp).Row
    If LRow = 1 Then
        If StrComp(Range("A1"), "выбор", vbTextCompare) = 0 Then Range("A1").EntireRow.Interior.Color = vbRed
        Exit Sub
    End If
    arr = Range("A1:A" & LRow).Value
    For i = 1 To UBound(arr)
        If StrComp(arr(i, 1), "выбор", vbTextCompare) = 0 Then
            If Len(s) = 0 Then s = "A" & i Else s = s & ",A" & i
            If Len(s) > 47 Then
                Col.Add (s)
                s = ""
            End If
            If Len(s) > 0 Then Col.Add (s)
        End If
    Next
    If Col.Count = 0 Then Exit Sub
    Application.ScreenUpdating = False
    For i = 1 To Col.Count
        Range(Col(i)).EntireRow.Interior.Color = vbRed
    Next
    Application.ScreenUpdating = True
End Sub



0



snipe

4038 / 1423 / 394

Регистрация: 07.08.2013

Сообщений: 3,541

27.06.2016, 03:40

8

а просто макрос записать макрорекордером не пробовали

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Sub Макрос1()
    Rows("1:40000").Select
    Selection.AutoFilter
    ActiveSheet.Range("A1:A40000").AutoFilter Field:=1, Criteria1:="=*недвижимость*", _
        Operator:=xlAnd
    Rows("2:40000").Select
    With Selection.Interior
        .Pattern = xlSolid
        .PatternColorIndex = xlAutomatic
        .Color = 255
        .TintAndShade = 0
        .PatternTintAndShade = 0
    End With
    ActiveSheet.Range("A1:A40000").AutoFilter Field:=1
End Sub



0



1811 / 1134 / 345

Регистрация: 11.07.2014

Сообщений: 3,999

27.06.2016, 07:30

9

Господа, вы рассуждаете о такой пустяковой задаче, как о проблеме века. Судя по всему, автор темы мало чего знает о VBA и, когда я пишу ответы на вопрос, то стараюсь наметить возможные пути (далеко не все) для решения задачи и достаточно простые, надеясь, что это станет толчком к самостоятельным действиям автора. Я думаю, что сейчас он оценивает ваши алгоритмы с точки зрения «работает-не работает». А у вас этот «пустячок» как зеркало, чтобы полюбоваться на себя. Алгоритмы мне понравились, надеюсь, что и автор темы в них разберётся. С наилучшими пожеланиями. Burk
P.S. Вскоре создам новую, более серьёзную тему, если вам известно её решение В НУЖНОМ МНЕ АСПЕКТЕ буду признателен.



0



6875 / 2807 / 533

Регистрация: 19.10.2012

Сообщений: 8,562

27.06.2016, 08:38

10

del, уже реализовано



0



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

Выделите всю строку при прокрутке с помощью кода VBA

Выделите всю строку / столбец / строку и столбец при прокрутке с помощью Kutools for Excel


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

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

док выделить всю строку 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

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-дневная гарантия возврата денег.

вкладка kte 201905


Вкладка 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:

VBA highlight several specific rows

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

Понравилась статья? Поделить с друзьями:
  • Excel макрос как выделить все листы
  • Excel макрос как выбрать лист
  • Excel макрос как вставить строку
  • Excel макрос имя столбца
  • Excel макрос или activex