При работе с 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