Примеры, представленные в этой и последующих статьях, нацелены на более детальное объяснение методов управления диапазонами в таблицах Excel при использовании языка программирования VBA.
В данном контексте будем рассматривать следующие темы: методы копирования областей, определение типа данных диапазона, создание запросов для ввода данных в ячейку, выявление первой пустой ячейки в столбце, остановка выполнения макроса для возможности выбора пользователем диапазона, подсчет ячеек в пределах диапазона, циклический обход ячеек в диапазоне и различные другие манипуляции, выполняемые с диапазонами.
Копирование (дублирование) диапазона
Инструмент записи макросов в Excel применяется не только для формирования эффективного кода, но и для обнаружения соответствий необходимых объектов, методов и свойств. Код, полученный в результате записи макроса, не всегда является идеальным, однако он обычно предоставляет ценную информацию.
Например, при записи простой операции копирования из ("A1") и вставки в ("B1") можно получить пять строк кода на языке VBA.
Как видно, программа выделяет ячейку A1, копирует ее, затем выделяет ячейку B1 и выполняет операцию вставки. Тем не менее, в VBA необязательно выделять объект для работы с ним. Более краткую версию вышеуказанной процедуры можно получить, заменив эти строки на более лаконичный метод Copy (копировать), который использует аргумент, представляющий адрес места вставки копируемого диапазона (процедура называется ДиапазонКопирования).
В обоих случаях предполагается, что активен рабочий лист, и операция выполняется на активном листе.
Для выполнения копирования диапазона на другой рабочий лист или в другую книгу, требуется определить ссылки на соответствующие места. В следующем примере (процедура называется ДиапазонКопирования2) производится копирование диапазона с листа "Лист1" в книге "Файл1.xlsx" на лист "Лист1" в книге "Файл2.xlsx". Благодаря корректным ссылкам данный пример функционирует независимо от активной рабочей книги.
Другим способом решения задачи является использование объектных переменных (более подробнее про объектные переменные в статье № 68) для представления диапазонов, как показано в следующем коде. (процедура называется ДиапазонКопирования3)
Конечно же вам уважаемые читатели очевидно, что операция копирования может и не ограничивается одной ячейкой. Например, следующая процедура (ДиапазонКопирования4) копирует диапазон из 12 ячеек.
Хочу напомнить, что адрес места вставки определяется единственной ячейкой, представляющей левый верхний угол вставляемого диапазона.
Перемещение (перенос) диапазона
Инструкции VBA для перемещения диапазона ячеек аналогичны инструкциям по копированию диапазона, однако отличаются использованием метода Cut (вырезать) вместо метода Copy (копировать). Опять же хочу отметить, что при указании целевого диапазона для вставки необходимо указывать только адрес левой верхней ячейки.
Следующий пример иллюстрирует операцию перемещения 12 ячеек (из диапазона A1:C4) на новое место, начиная с ячейки D1 (на том же листе).
Этот код осуществляет вырезание выбранного диапазона и вставку его, начиная с указанной ячейки D1.