Видео: -21- VBA Excel. Запись макроса. Макрорекордер. Прямые и относительные ссылки. 2025
На вкладке «Разработчик» выберите параметр «Использовать относительные ссылки».
-
-
На вкладке «Разработчик» выберите «Запись макроса».
-
Назовите макрос AddTotalRelative.
-
Выберите эту книгу для сохранения.
-
Нажмите OK, чтобы начать запись.
-
-
Выберите первую пустую ячейку в столбце D (D16) и введите = COUNTA (D2: D15).
-
На вкладке «Разработчик» нажмите «Остановить запись», чтобы остановить запись макроса.
-
На этом этапе вы записали два макроса. Найдите минутку, чтобы изучить код для вновь созданного макроса, выбрав «Макросы» на вкладке «Разработчик», чтобы открыть диалоговое окно «Макро». Выберите макрос AddTotalRelative и нажмите «Редактировать».
Sub AddTotalRelative () ActiveCell. Смещение (15, 0). Range ("A1"). Выберите ActiveCell. FormulaR1C1 = "Total" ActiveCell. Смещение (0, 3). Range ("A1"). Выберите ActiveCell. FormulaR1C1 = "= COUNTA (R [-14] C: R [-1] C)" End Sub
Прежде всего обратите внимание, что код не содержит ссылок на конкретные диапазоны ячеек (кроме начальной точки, A1). Обратите внимание, что в этом макросе Excel использует свойство Offset активной ячейки. Это свойство указывает курсору перемещать определенное количество ячеек вверх или вниз и определенное количество ячеек влево или вправо.
В этом случае код свойства Offset указывает Excel на перемещение 15 строк вниз и 0 столбцов напротив активной ячейки (A1). Поскольку макрос был записан с использованием относительной ссылки, Excel не будет явно выбрать конкретную ячейку, как это было при записи абсолютной ссылки макроса.
Чтобы увидеть этот макрос в действии, удалите строку Total для обеих таблиц и выполните следующие действия:
Выберите ячейку A1.
-
На вкладке «Разработчик» выберите «Макросы».
-
Найдите и выберите макрос AddTotalRelative.
-
Нажмите кнопку «Выполнить».
-
Выберите ячейку F1.
-
На вкладке «Разработчик» выберите «Макросы».
-
Найдите и выберите макрос AddTotalRelative.
-
Нажмите кнопку «Выполнить».
-
Обратите внимание, что этот макрос, в отличие от вашего предыдущего макроса, работает на обоих наборах данных.Поскольку макрос применяет итоговые значения относительно текущей активной ячейки, итоговые значения применяются правильно.
Чтобы этот макрос работал, вам просто нужно убедиться, что
Вы выбрали правильную стартовую ячейку перед запуском макроса.
-
Блок данных имеет такое же количество строк и столбцов, что и данные, на которые вы записали макрос.