Использование абсолютных и относительных ссылок

Использование абсолютных и относительных ссылок. В макросе CompanyAddress Excel записывает адреса ячеек в виде абсолютных ссылок в формате А1, и поэтому макрос всегда вводит отформатированный адрес фирмы в ячейку А6. В Visual Basic выделение ячеек записывается в виде абсолютных ссылок, пока не будет нажата кнопка Относительная ссылка Relative Reference на панели инструментов Остановка записи Stop Recording.

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

Во время записи макроса можно в любое время переключаться с относительных ссылок на абсолютные, или наоборот. Предположим, что вместо вставки названия и адреса фирмы в ячейки А6 А8 активного листа нужно вставить адрес в ячейку, которая окажется активной на момент запуска макроса. Для этого нужно создать новую версию макроса CompanyAddress назовем ее Company AddressRel, в которой будут использоваться относительные ссылки вместо абсолютных. 1. Необходимо переключиться в рабочий лист, выделите ячейки А6 А8, в меню Правка Edit выбрать команду Очистить Clear и затем Все All. После этого выделить ячейку А6. 2. В меню Сервис Tools выбрать команду Макрос Macro и затем Начать запись Record New Macro. В окне диалога Запись макроса Record Macro указать CompanyAddressRel в качестве имени макроса, в поле Сочетание клавиш Shortcut Key ввести строчную букву а, и в поле Описание Description Ввод адреса фирмы в произвольную ячейку.

Нажать кнопку ОК, и Excel выведет на экран панель инструментов Остановка записи Stop Recording. 3. На панели инструментов Остановка записи нажать кнопку Относительная ссылка Relative Reference.

После этого кнопка должна выглядеть нажатой, показывая тем самым, что записываются относительные ссылки. 4. В меню Формат Format выбрать команду Ячейки Cells. Задайте 14-пунктный шрифт Arial и полужирный курсив, а затем нажать кнопку ОК. 5. Ввести текст Региональная Торговая Компания Нажать клавишу -1- и ввести Морская улица 15 Еще раз нажать клавишу П и ввести 325611 Кузнецк, Россия Затем нажать клавишу Enter. 6. Нажать кнопку Остановить запись Stop Recording.

Нужно проверить созданный макрос, выделяя разные ячейки и нажимая клавиши Ctrl a на этот раз без клавиши Shift. Если переключиться в Visual Basic, нужно открыть Module1 и найти макрос Company AddressRel, то можно увидеть текст, представленный ниже Sub CompanyAddressRel CompanyAddressRel Макрос Ввод адреса фирмы в произвольную ячейку Сочетание клавиш Ctrl a ActiveCell. FormulaR1C1 Региональная Торговая Компания With Selection.

Font. Name Arial. FontStyle Полужирный курсив. Size 14 . Strikethrough False. Superscript False. Subscript False. OutlineFont False. Shadow False. Underline xlUnderlineStyleNone. Colorlndex xlAutomatic End With ActiveCell, Offset 1, 0. Range A1. Select ActiveCell. FormulaR1C1 Морская улица 15 ActiveCell. Offset 1, 0. Range A1. Select ActiveCell. FormulaR1C1 325611 Кузнецк, Россия End Sub Первоначальный макрос CompanyAddress вводит адрес фирмы в диапазон А6 А8 независимо от того, какая ячейка является активной при его запуске.

Новый же макрос вводит адрес, начиная с активной ячейки, независимо от того, где она расположена. Если сравнить две версии макроса, то можно увидеть, что они отличаются только инструкциями, используемыми для выделения ячеек. Например, новая версия макроса не содержит инструкции для выделения первой ячейки, поскольку в ней применяются относительные ссылки, и первая ячейка уже выделена.

Кроме того, для выделения второй ячейки первоначальный макрос использует инструкцию Range A7. Select В то же время в новой версии употреблена инструкция ActiveCell. Offset 1, 0. Range A1. Select Чтобы перейти из активной ячейки в следующую, расположенную ниже, в новом макросе Visual Basic применяет к выделенному объекту метод Offset с двумя аргументами, задающими смещение по строкам и по столбцам. Ключевое слово Range возвращает диапазон, имеющий ту же размерность, что и его аргумент.

В данном случае аргумент A1 задает диапазон, состоящий из одной ячейки. Наконец, метод Select выделяет этот диапазон, как и в первоначальном макросе. Очевидно, что при использовании макроса с относительными ссылками расположение активной ячейки имеет большое значение. Перед запуском этого макроса обязательно выделить ячейку, в которую нужно ввести адрес. Иначе адрес будет введен там, где случайно оказалась активная ячейка.

Основное различие между ссылками на ячейки в рабочем листе и в модуле состоит в следующем в рабочем листе символ указывает на то, что ссылка на столбец или строку является абсолютной, а в модуле все ссылки являются абсолютными. Таким образом, относительные ссылки в модуле могут быть построены только посредством применения метода Offset к объекту Range, использующему абсолютные ссылки. Какая форма лучше абсолютная или относительная Абсолютные ссылки обычно используются, когда хочется выполнить одно и то же действие в одном и том же месте нескольких листов или когда нужно выполнить некоторое действие несколько раз в одном и том же месте одного листа.

Относительные ссылки удобны, что имеется возможность выполнять действие в любом месте рабочего листа. 2.11