Найти тему
VBA Excel с нуля

VBA Excel № 104. Работа с диапазонами. Копирование диапазона переменного размера.

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

Копирование диапазона переменного размера представляет собой неотъемлемую часть многих задач, где необходимо воспроизвести содержимое ячеек, не имея точной информации о размерах этого диапазона (количество столбцов и строк). Рассмотрим сценарий управления рабочей книгой, фиксирующей объем продаж за определённый период. Поскольку количество строк в этом диапазоне изменяется каждый день в зависимости от добавления новых данных, заранее знать его точные размеры невозможно.

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

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

Ниже приведен пример макроса, иллюстрирующего, как скопировать данный диапазон с Листа1 на Лист2, начиная с ячейки А1. В данном случае используется свойство CurrentRegion, возвращающее объект Range, представляющий собой блок ячеек, окружающих указанную ячейку (в данном случае - A1).

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

Для понимания принципа работы свойства CurrentRegion, предлагаю использовать запись макроса, который демонстрирует выделение группы ячеек с использованием этого свойства. Обычно значение свойства CurrentRegion (текущий диапазон) представляет собой прямоугольный диапазон ячеек, окруженный пустыми строками или столбцами.

Сделать это можно так: команды Главная=>Редактирование=>Найти и выделить=>Выделение группы ячеек с последующей установкой переключателя Текущую область.

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

Еще один способ выделить группу ячеек - нажать комбинацию клавиш <Ctrl+Shift+*>.

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

Дальше по стандарту: копируем, выделяем Лист2, выделяем ячейку А1, вставляем, отменяем выделение. Смотрим код:

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

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