Выделение строки Vba Excel

Обновлено: 21.11.2024

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

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

В этом примере показано, как можно программно выделить активный столбец и строку с помощью VBA. Для этого мы будем использовать событие SelectionChange объекта Worksheet.

Во-первых, вы очищаете цвет фона всех ячеек на листе, задавая для свойства ColorIndex значение 0. Затем вы выделяете всю строку и столбец активной ячейки, устанавливая их ColorIndex в порядковый номер нужного цвета.

Настройка кода

Если вы хотите настроить код под свои нужды, вам могут пригодиться эти небольшие советы:

  • В нашем примере кода используются два разных цвета, показанные на рисунке выше: индекс цвета 38 для строки и 24 для столбца. Чтобы изменить цвет подсветки, просто замените их любыми кодами ColorIndex по вашему выбору.
  • Чтобы получить одинаковую окраску строки и столбца, используйте для них один и тот же номер индекса цвета.
  • Чтобы выделить только активную строку, удалите или закомментируйте эту строку: .EntireColumn.Interior.ColorIndex = 24
  • Чтобы выделить только активный столбец, удалите или закомментируйте эту строку: .EntireRow.Interior.ColorIndex = 38

Как добавить код на лист

Чтобы код автоматически выполнялся в фоновом режиме на определенном рабочем листе, вам нужно вставить его в окно кода, принадлежащее этому рабочему листу, а не в обычный модуль. Чтобы это сделать, выполните следующие действия:

  1. В книге нажмите клавиши ALT + F11, чтобы открыть редактор VBA.
  2. В обозревателе проектов слева вы увидите список всех открытых книг и их рабочих листов. Если вы его не видите, используйте сочетание клавиш Ctrl + R, чтобы отобразить окно Project Explorer.
  3. Найдите целевую книгу. В папке Объекты Microsoft Excel дважды щелкните лист, к которому вы хотите применить выделение. В данном примере это Лист 1.
  4. В окне кода справа вставьте приведенный выше код.
  5. Сохраните файл как книгу с поддержкой макросов (.xlsm).

Преимущества: все делается в бэкенде; никаких настроек/настроек со стороны пользователя не требуется; работает во всех версиях Excel.

Недостатки: есть два существенных недостатка, которые делают этот метод неприменимым при определенных обстоятельствах:

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

Выделить активную строку и столбец без VBA

Лучшее, что вы можете сделать, чтобы выделить выбранную строку и/или столбец без VBA, — это условное форматирование Excel. Чтобы настроить его, выполните следующие действия:

  1. Выберите набор данных, в котором нужно выделить выделение.
  2. На вкладке Главная в группе Стили нажмите Новое правило.
  3. В диалоговом окне Новое правило форматирования выберите Использовать формулу для определения форматируемых ячеек.
  4. В поле Форматировать значения, в которых эта формула верна, введите одну из следующих формул:

Чтобы выделить активную строку:

Чтобы выделить активный столбец:

Чтобы выделить активную строку и столбец:

=ИЛИ(ЯЧЕЙКА("строка")=СТРОКА(), ЯЧЕЙКА("Столбец")= СТОЛБЦ())

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

В этом примере мы выбрали формулу ИЛИ, чтобы закрасить столбец и строку одним цветом. Это требует меньше усилий и подходит для большинства случаев.

К сожалению, это решение не так хорошо, как решение VBA, поскольку требует пересчета листа вручную (нажатием клавиши F9). По умолчанию Excel пересчитывает рабочий лист только после ввода новых данных или редактирования существующих, но не при изменении выбора. Итак, вы выбираете другую ячейку - ничего не происходит. Нажимаем F9 — лист обновляется, формула пересчитывается, подсветка обновляется.

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

Код вызывает пересчет выбранного диапазона/ячейки, что, в свою очередь, приводит к обновлению функции ЯЧЕЙКА и отражению изменений в условном форматировании.

Преимущества: в отличие от предыдущего метода, этот не влияет на существующее форматирование, которое вы применили вручную.

Недостатки: может снизить производительность Excel.

  • Чтобы условное форматирование работало, необходимо заставить Excel пересчитывать формулу при каждом изменении выделения (либо вручную с помощью клавиши F9, либо автоматически с помощью VBA). Принудительные пересчеты могут замедлить работу вашего Excel. Поскольку наш код пересчитывает выборку, а не весь лист, негативный эффект, скорее всего, будет заметен только на действительно больших и сложных книгах.
  • Поскольку функция ЯЧЕЙКА доступна в Excel 2007 и более поздних версиях, этот метод не будет работать в более ранних версиях.

Выделить выбранную строку и столбец с помощью условного форматирования и VBA

В случае, если предыдущий метод значительно замедляет работу рабочей книги, вы можете подойти к задаче по-другому: вместо пересчета рабочей таблицы при каждом перемещении пользователя получите номер активной строки/столбца с помощью VBA, а затем передайте этот номер функцию ROW() или COLUMN() с помощью формул условного форматирования.

Для этого необходимо выполнить следующие шаги:

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

А теперь давайте подробно рассмотрим три основных варианта использования.

Как выделить активную строку

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

=ROW()='Вспомогательный лист'!$A$2

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

Как выделить активный столбец

Чтобы выделить выбранный столбец, введите номер столбца в функцию СТОЛБЦ, используя следующую формулу:

=COLUMN()='Вспомогательный лист'!$B$2

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

Как выделить активную строку и столбец

Чтобы выбранная строка и столбец автоматически окрашивались одним цветом, объедините функции ROW() и COLUMN() в одну формулу:

=OR(ROW()='Вспомогательный лист'!$A$2, COLUMN()='Вспомогательный лист'!$B$2)

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

Преимущества: оптимизированная производительность; работает во всех версиях Excel

Недостатки: самая долгая настройка

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

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

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

Что на этой странице

1. Как автоматически выделить строку с помощью макроса события?

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

Как добавить код в книгу

Примечание: сохраните книгу с расширением файла *.xlsm, чтобы сохранить код, прикрепленный к книге.

Код VBA

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

Этот код события выделяет весь столбец выбранной ячейки.

Код VBA

3. Выделить строку и столбец выбранной ячейки

Этот код события выделяет весь столбец и строку выбранной ячейки.

Код VBA

4. Выделение строк и столбцов нескольких выбранных ячеек

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

5. Применить границы к строке выбранной ячейки

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

Получить файл Excel


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

Еженедельный блог EMAIL

[newsletter_signup_form Я Оскар и здесь, чтобы помочь вам.

Не стесняйтесь оставлять комментарии и задавать вопросы по Excel.

Подпишитесь на мою рассылку, чтобы не пропустить новые статьи блога.

Статьи по теме

В этой статье демонстрируется макрос, который копирует значения между листами. Я использую книгу шаблонов счетов. Этот макрос копирует […]

В этом руководстве показано, как составить список файлов Excel в определенной папке и создать рядом флажки с помощью VBA. […]

В этом посте я покажу, как создать новый лист для каждого самолета с помощью vba. […]

В этом сообщении блога показано, как программно создавать, заполнять и изменять поля со списком (элемент управления формой). Элементы управления формы не такие гибкие […]

На изображении выше показана формула массива в ячейке D6, которая извлекает пропущенные числа в диапазоне ячеек B3:B7, нижний […]

В этой статье демонстрируется определяемая пользователем функция, которая позволяет извлекать ссылки на ячейки из формулы в заданном […]

Терри хочет сделать лабиринт другого размера, и я думаю, что это отличная идея. Возможно, вы помните, что я […]

С . Оператор End With позволяет писать более короткий код, ссылаясь на объект только один раз вместо […]

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

1) Измените ширину столбца и высоту строки в Excel с помощью VBA. Знаете ли вы, что вы можете динамически изменять ширину столбца или даже высоту строки в Excel? Да, вы можете использовать VBA.

2) Мигание или мигание нескольких ячеек в Excel с помощью простого макроса: мигание ячеек (с содержимым) на основе определенных условий может служить напоминанием и привлекать наше внимание к данным, которые важны для нашего бизнеса. Узнайте, как заставить ячейки таблицы мигать с помощью небольшого макроса.

В приведенном здесь примере выделяется вся строка, когда программа обнаруживает слово canceled . Это было моим требованием. Неважно, в верхнем или нижнем регистре слово.

Код выполняется, когда вы вводите слово в ячейку и нажимаете клавишу ввода или используете клавиши со стрелками для перехода к следующей (или предыдущей) строке. Вот почему я написал свой код внутри события Worksheet_Change листа. Он проверит, вводили ли вы или кто-либо еще слово «отменено» в какой-либо ячейке. См. изображение ниже.

Если вы хотите проверить слово с пробелом и принять соответствующие меры, вы можете использовать метод Replace() . Например,

UCase( Replace (Cells(Target.Row, Target.Column), " ", "")) = "ОТМЕНЕНО"

Метод Replace() принимает три параметра. Первое — это выражение (или слово), второе — это символы, которые вы хотите найти с помощью метода, а третье — это символ, который вы хотите заменить.

Выделить всю строку на основе числового условия

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

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

Поэтому я решил создать учебник и видео по нему. Это сэкономит мне время и поможет читателям.

Ниже показано видео, в котором я показываю, как выделить активную строку и столбец в Excel.

<Р>