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