Использование макросов в Excel
Рефераты >> Программирование и компьютеры >> Использование макросов в Excel

9. Щелкнуть в начале строки, содержащей инструкцию

Range ("A7"). Select

Затем нажать клавишу Enter, чтобы вставить пустую строку, и укажите точку вставки, щелкнув в начале пустой строки.

10. В меню Edit (Правка) выбрать команду Paste (Вставить).

11. Прокрутить окно вверх и удалить весь макрос CompanyAddress от инструк­ции Sub до инструкции End Sub.

12. Наконец, в меню View (Вид) выбрать команду Microsoft Excel, чтобы пере­ключиться в Excel.

Можно проверить работу измененного макроса, нажав клавиши Ctrl+ Shift+ A. Теперь макрос не только вводит адрес, но также применяет задан­ные форматы шрифта. Ниже представлен исходный текст макроса CompanyAddress:

Sub CompanyAddress () Range ("A6"). Select

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

Range ("A7"). Select

ActiveCell. FormulaR1C1 = "Морская улица 15" Range ("A8"). Select

ActiveCell. FormulaR1C1 = "325611 Кузнецк, Россия" End Sub

Конструкция With . End With задает ряд свойств объекта, в данном случае — шрифта текущего выделения. Эта конструкция позволяет использовать крат­кую форму записи последовательности инструкций Visual Basic, которые иначе имели бы следующий вид:

Selection. Font, Name = "Arial"

Selection, Font. FontStyle = "Полужирный курсив"

Selection. Font. Size = 14

Selection. Font. Strikethrough = False

Selection. Font. Superscript = False

и т. д.

В макросе CompanyAddress оба объекта, ActiveCell и Selection, указывают на один и тот же диапазон, а именно ячейку А6. Поскольку ряд параметров форматирования шрифта можно применить к целому диапазону, то Excel использует ключевое слово Selection вместо ActiveCell.

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

В макросе 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, использующему абсолютные ссылки.


Страница: