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

Рисунок 17 – Объект Range и несколько его методов

2.7 Семейства объектов

Существует возможность иметь несколько экземпляров одного и того же объекта Visual Basic. Все вместе эти экземпляры образуют семейство (collection). Конкрет­ный экземпляр в семействе объектов идентифицируется с помощью имени или индекса. Например, семейством всех листов в книге является Sheets() Конкретный экземпляр листа можно указать следующим образом:

Sheets (3) 'Третий лист в семействе. или

Sheets ("Итоги") 'Именованный экземпляр листа.

В Visual Basic каждый элемент семейства имеет собственный индекс, но ин­тервал значений индексов не обязательно непрерывен, и поэтому при удале­нии одного экземпляра объекта индексы других экземпляров могут остаться прежними. Например, если удалить Sheets (3) из семейства 12 листов книги, нет гарантии, что Excel перенумерует Sheets (4) и т. д. до Sheets (12), чтобы заполнить разрыв.

В других языках программирования для многократного повторения операции можно использовать конструкцию For . Next, например

For n = 1 to 12 'Активизация каждого листа

Sheets (n). Activate Next n

Если выполнить эти инструкции после удаления листа Sheets (3), то Visual Basic выведет сообщение об ошибке и остановит макрос, поскольку Sheets (3) больше не существует. Для таких ситуаций Visual Basic предлагает конструк­цию For Each . Next, которая применяет ряд инструкций к каждому элементу семейства без учета их индексов. Например, предположим, что нужно присвоить имя каждому листу активной книги, вводя в ячейку А1 значения Sheet 1, Sheet 2 и т. д. Так как в общем случае количество листов в книге может быть неизвестно, можно воспользоваться следующим макросом Visual Basic:

Sub EnterSheetNum() n = 0

For Each Sheet In Sheets ()

n = n+ 1

Sheet. Activate

Range ("A1"), Select

ActiveCell. FormulaR1C1 = "Sheet"+ Str (n) Next End Sub

Можно установить свойство объекта, содержащегося в другом объекте, задав «подобъект» в виде последовательности вложенных объектов. Напри­мер, чтобы макрос EnterSheetNum выполнялся быстрее, можно установить свойство FormulaR1C1 ячейки А1 каждого листа без его предварительной акти­визации. Для этого достаточно заменить следующие инструкции:

Sheet. Activate Range ("A1"). Select

ActiveCell. FormulaR1C1 = "Sheet"+ Str (n) одной строкой:

Sheet. Range ("A1"). FormulaR1C1 = "Sheet"+ Str (n)

Последняя инструкция означает: Установить свойство FormulaR1C1 ячейки А1 листа равным «Sheet n». Основной результат этого изменения заключает­ся в том, что новый макрос выполняется быстрее, поскольку он не заставляет Excel активизировать каждый лист перед вводом текста.

2.8 Имена аргументов метода

В Visual Basic многие методы имеют аргументы, которые позволяют задать параметры выполняемых действий. Если у киберпса метод Wag (вилять) объекта Tail (хвост) имеет аргументы (например, wagRate — количес­тво виляний в секунду, wagTime — продолжительность виляния в секундах и wag Arc — размах виляния в градусах), их можно задать, использовав один из двух вариантов синтаксиса.

В первом варианте, который часто называется синтаксисом по имени (by­name syntax), используемые аргументы указываются по имени и в произволь­ном порядке. Например, следующая инструкция заставляет киберпса вилять хвостом три раза в секунду в течение часа с амплитудой 180 градусов:

Robodogs('Fido"). Tail. Wag

wagRate: = 3,_

wagTime: = 3600,_

wagArc: = 180

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

При использовании второго варианта, который обычно называется синтакси­сом по позиции (by-position syntax), аргументы вводятся в предписанном порядке. (Порядок аргументов для каждого метода приведен в справочной системе Microsoft Visual Basic.) Например, предыдущая инструкция, записан­ная в синтаксисе по позиции, имеет следующий вид:

Robodogs ("Fido"). Tail. Wag (3, 3600, 180)

Нужно обратить внимание, что список аргументов заключен в круглые скобки. Син­таксис по позиции не так удобен, как синтаксис по имени, поскольку требует запоминания порядка следования аргументов. Кроме того, когда впослед­ствии будет просматриваться текст программы, то отсутствие имен аргументов не освежит память и практически ничего не скажет о примененных па­раметрах.

2.9 Вставка инструкций в существующий макрос

Предположим, что записан макрос, который вводит ряд заголовков, ус­танавливает для них шрифт и рисует рамку. Затем обнаружилось, что пропущен какой-то шаг или записан неправильно, например применен не тот тип границы. Что делать в этом случае?

Предыдущие версии Excel позволяли вносить изменения в существующий макрос посредством дозаписи в него последовательности действий, начиная с заданной позиции, с помощью команд Отметить позицию (Mark Position For Recor­ding) и Записать с отметки (Record At Mark). В последней версии среды Visual Basic эти средства не поддерживаются. Чтобы добавить инструкции в сущес­твующий макрос, нужно записать действия во временный макрос и затем скопировать инструкции из него в изменяемый макрос.

Например, чтобы добавить в макрос CompanyAddress шаг, который устанав­ливает шрифт для названия фирмы, выполните описанные ниже действия.

1. Переключиться в лист, содержащий введенный ранее адрес, и выделить ячейку А6 с названием фирмы.

2. В меню Сервис (Tools) выбрать команду Макрос (Macro) и затем — Начать запись (Record New Macro), чтобы открыть окно диалога Запись макроса (Record Macro). Ввести MacroTernp в поле Имя макроса (Macro Name) и нажать кнопку ОК. Excel выведет на экран панель инструментов Остановка записи (Stop Recording).

3. Выбрать в меню Формат (Format) команду Ячейки (Font). Затем в списке шрифтов на вкладке Шрифт (Font) открывшегося окна диалога выбрать шрифт Arial (или другой установленный шрифт) размером 14 пунктов и указать полужирный курсив. Затем нажать кнопку ОК, чтобы применить эти форматы.

4. Нажать кнопку Остановить запись (Stop Recording) на панели инструментов Остановка записи.

5. В меню Сервис выбрать команду Макрос и затем — Редактор Visual Basic (Visual Basic Editor). Если окно проекта отсутствует на экране, в меню View (Вид) выбрать команду Project Explorer (Окно проекта). Окно проекта содержит список объектов, принадлежащих активной книге: три листа, объект, представляющий книгу в целом, и один модуль.

6. Дважды щелкнуть на строке Module1. Появится окно, содержащее записан­ные макросы, в соответствии с рисунком 18. Прокрутить его вниз, чтобы вывес­ти на экран весь текст макроса MacroTemp.

Рисунок18 – Макрос MacroTemp, содержащий только что записанные

инструкции

7. Выделить в макросе все строки конструкции With . End With и затем в меню Edit (Правка) выбрать команду Copy (Копировать).

8. Прокрутить окно вверх, чтобы вывести на экран макрос Company Address.


Страница: