Найти в Дзене
VBA Excel с нуля

VBA Excel № 106. Работа с диапазонами. Выделение диапазонов.

Скриншот с моего ноутбука
Скриншот с моего ноутбука

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

Основное внимание обычно уделяется свойству CurrentRegion, но также важно овладеть методом End объекта Range. Этот метод принимает аргумент, который определяет направление выделенных ячеек. Пример использования:

Скриншот с моего ноутбука
Скриншот с моего ноутбука

Этот код выделяет диапазон от активной ячейки до последней непустой ячейки внизу.

Помимо xlDown, есть и другие константы: xlUp (вверх), xlToLeft (влево) и xlToRight (вправо).

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

Приведенный макрос ВыборТекущегоДиапазона имитирует нажатие клавиш <Ctrl+Shift+*> и может быть использован для выделения текущего региона (диапазона):

Скриншот с моего ноутбука
Скриншот с моего ноутбука

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

Скриншот с моего ноутбука
Скриншот с моего ноутбука

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

При изучении VBA-кода, написанного другими программистами, можно заметить различные способы создания ссылок на диапазоны. Например:

[A2:D8].Select

Адрес диапазона указан в квадратных скобках и не заключен в кавычки. Это эквивалентно следующему:

Range("A2:D8").Select

Используя квадратные скобки, достигается упрощение синтаксиса при использовании метода Evaluate в контексте объекта Application. В приведенном примере квадратные скобки аналогичны данной конструкции:

Application.Evaluate("A2:D8").Select

Скриншот с моего ноутбука
Скриншот с моего ноутбука

Наука
7 млн интересуются