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

VBA Excel № 5. Макрорекодер. Относительная запись макросов

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

1. Выбрав ячейку A1, в меню Разработчик выберите Относительные ссылки.

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

2. Нажмите на кнопку Запись макроса и дайте ему имя "Относительный".

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

3. Выберите Эта книга в поле Сохранить в.

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

4. Щелкните на ОК, чтобы начать запись макроса.

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

5. Введите слово "Всего" в ячейку А11 и введите =СЧЁТЗ(В2:В10) в первую пустую ячейку в столбце В, а именно в ячейку (В11).

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

6. Чтобы остановить запись макроса, нажмите на кнопку Остановить запись в меню Разработчик (вы заметили, что процедура записи этого макроса, мало отличается от того что описано в статье №4).

Теперь нас есть два макроса. Чтобы рассмотреть код последнего, нужно выбрать его в окне Макрос, которое можно открыть, щелкнув на кнопке Макросы на вкладке Разработчик.

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

После выбора макроса «Относительный» нужно нажать на кнопку Изменить.

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

Тогда откроется окно редактора Visual Basic, в котором будет отображаться код записанного макроса. В этом коде используется свойство Offset для перемещения на 10 строк вниз и на 0 в сторону от активной ячейки.

Это позволяет НЕ ЯВНО выбирать ячейку в Excel, как это было при записи макроса с помощью абсолютных ссылок.

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

Вы заметили, что в коде VBA кроме начальной ячейки "A1" отсутствуют ссылки на конкретные диапазоны ячеек. Рассмотрим, как работает этот код. Во второй строке используется свойство Offset активной ячейки, которое перемещает указатель мыши на определенное количество ячеек вверх/вниз и вправо/влево. В данном случае, свойство Offset указывает Excel на перемещение на 10 строк вниз и на 0 в сторону от активной ячейки (ячейка А1). Для выполнения макроса не нужно явно выбирать ячейку в Excel, как при записи макроса с помощью абсолютных ссылок.

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

1. Выберите ячейку A1.

2. На вкладке "Разработчик" щелкните кнопку "Макросы".

3. В появившемся окне найдите и выделите макрос "Относительный".

4. Щелкните кнопку "Выполнить".

А теперь повторите эти вышеуказанные действия, предварительно выбрав ячейку (D1).

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

Вы увидите, что этот макрос работает с двумя наборами данных и вычисляет итоги относительно текущей активной ячейки. Это гарантирует корректные результаты.

Однако, чтобы гарантировать работоспособность макроса, следует выбрать КОРРЕКТНУЮ НАЧАЛЬНУЮ ЯЧЕЙКУ и убедиться, что текущая таблица данных (у нас это города на букву Б) имеет ТО ЖЕ КОЛИЧЕСТВО СТРОК И СТОЛБЦОВ, что и данные (у нас это города на букву А), на основе которых был записан макрос. Этот пример иллюстрирует запись макроса в режиме использования относительных ссылок, что может оказаться полезным в некоторых ситуациях.

В следующей статье мы рассмотрим, как назначить кнопке наш макрос.
Предыдущая статья про Абсолютную запись макросов макрорекодером.