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

В VBA выделение ячеек всегда записывается в виде абсолютных ссылок в текстовом формате R1 C1, пока вы не нажмёте кнопку Относительная ссылка на панели инструментов Остановка записи. После этого кнопка будет выглядеть нажатой, показывая тем самым, что при записи используются относительные ссылки на ячейки.

Если мы хотим, чтобы рассмотренный макрос вводился начиная с активной текущей ячейки (а не всегда в ячейки А6:А8), необходимо выполнить следующую последовательность действий для макроса с названием CompanyAddressRel:

· Очистите ячейки А6:А8 и выделите А6.

· Выполните команду Сервис/Макрос/Начать запись. В окне диалога Запись макроса

укажите CompanyAddressRel в качестве имени макроса, в поле сочетание клавиш введите строчную букву а и в поле описание – Ввод адреса фирмы в произвольную ячейку. Нажмите ОК.

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

· Выполните команду Формат/Ячейки. Задайте 14-пунктный Arial и полужирный курсив и нажмите ОК.

· Выделите текст

Региональная Торговая Компания АВС

нажмите клавишу ¯ и введите

Проспект Правды, 157

Ещё раз нажмите клавишу ¯ и введите

49083, Днепропетровск, Украина

Нажмите Enter

· Нажмите кнопку Остановить запись на панели инструментов Остановка записи.

Проверьте созданный макрос, выделяя разные ячейки и нажимая Ctrl + а. Текст макроса будет иметь вид

Sub Company Address Rel ()

Range(“А6”).Select

Active Cell.Formula R1C1= “Региональная Торговая Компания АВС”

With Selection.Font

.Name = “Arial”

.Font Style = “полужирный курсив”

.Size = 14

.Strikethrough = False

.Superscript = False

.Subscript = False

.OutlineFont = False

.Shadow = False

.Underline = xlUnderline StyleNone

.ColorIndex = xlAutomatic

End With

Active Cell.Offset (1,0).Range(“А1”).Select

Active Cell.FormulaR1C1= “Прспект правды 157”

Active Cell.Offset (1,0).Range(“А1”).Select

Active Cell.FormulaR1C1= “49083, Днепропетровск, Украина”

End Sub

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

ActiveCell.Offset (1,0). Range (“A1”).Select

Здесь VBA применяет метод Offset с двумя аргументами, задающими смещение по строкам и столбцам. Range возвращает диапазон, состоящий из одной ячейки А1, метод Select – выделяет этот дипазон.

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

1.5. Макросы и процедуры.

Макрос, который используется другим макросом, называется процедурой (Subroutine).Процедуры облегчают создание сложных макросов т.к. не нужно повторять одинаковые наборы инструкций несколько раз. При использовании одного макроса в другом вызывается процедура, для чего указывается её имя.

Для демонстрации разделим макрос Company Address Rel () на две части:

· Переключитесь в макрос Company Address Rel и выделите инструкции, которые формируют шрифт с помощью инструкции With…End With. В меню Правка (Edit) выберите команду Вырезать (Cut).

· Щелкните ниже инструкции End Sub в конце макроса Company Address Rel, затем выделите Sub Company Font ().

· Выполните команду Правка/Вставить (Edit/Paste) для вставки тела процедуры, в конце которой должна быть инструкция End Sub.

· После инструкции Active Cell.Formula R1C1= “Региональная Торговая Компания АВС” сделайте щелчёк и вставьте название процедуры Company Font, после чего два макроса будут иметь вид:

Sub Company Address Rel ()

Active Cell.Formula R1C1= “Региональная Торговая Компания АВС”

Company Font

Active Cell.Offset (1,0).Range(“А1”).Select

Active Cell.FormulaR1C1= “Прспект правды 157”

Active Cell.Offset (1,0).Range(“А1”).Select

Active Cell.FormulaR1C1= “49083, Днепропетровск, Украина”

End Sub

Sub Company Font ()

With Selection.Font

.Name = “Arial”

.Font Style = “полужирный курсив”

.Size = 14

.Strikethrough = False

.Superscript = False

.Subscript = False

.OutlineFont = False

.Shadow = False

.Underline = xl Underline Style None

.Color Index = xl Automatic

End With

End Sub


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: