Вызов и завершение работы процедур

С примерами вызова процедур и функций из кода мы уже сталкивались. Для этого достаточно записать имя процедуры или функции, передать ей необходимые параметры, а для функции еще и принять возвращаемое значение. Одни процедуры можно вызывать из других процедур. Но как дать пользователю возможность запустить самую первую процедуру?

В нашем распоряжении следующие возможности:

- создать макрос (т. е. специальную процедуру, не принимающую параметров, в модуле NewMacros) и запустить его по имени, кнопке или комбинацией клавиш (см. разд. 1.4). Макрос затем может вызывать и другие процедуры;

- создать форму и воспользоваться набором событий этой формы и элементов управления на ней (об этом будет рассказано в гл. 5) или просто элементом управления на листе Excel или документе Word;

- назначить процедуре специальное имя (AutoExec(), AutoNew() и т. п.).

Полный список таких специальных имен можно посмотреть в документации. Правда, поскольку раньше эти возможности активно использовались вирусами, в Office 2003 по умолчанию эти макросы запускаться не будут. Для того чтобы обеспечить им (и многим другим макросам) возможность запуска, необходимо изменить установленный уровень безопасности в меню Сервис | Макрос | Безопасность или обеспечить цифровые подписи для ваших макросов;

- вместо специального имени для макроса использовать событие: например, событие запуска приложения, событие открытия документа и т. п. Это рекомендованный Microsoft способ обеспечения автоматического запуска программного кода.

- можно запустить приложение из командной строки с параметром /m и именем макроса, например:

winword.exe /mMyMacros

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

В VBA вполне допустима ситуация, когда функция запускает на выполнение саму себя. Однако подобных вызовов лучше избегать (по возможности заменяя их на циклы). Причина - проблемы с читаемостью и возможное (в случае бесконечного запуска) исчерпание оперативной памяти (переполнение стека), чреватое серьезными системными ошибками.

Для завершения выполнения процедуры в VBA предусмотрены конструкции End и Exit. Синтаксис их очень прост:

Exit Sub

End Sub

Делают они одно и то же — завершают работу текущей процедуры. Однако используются в разных ситуациях:

- оператор End — это завершение работы процедуры после того, как все сделано. После оператора End код процедуры заканчивается;

- оператор Exit — это немедленное завершение работы функции в ходе ее работы. Обычно помещается в блок оператора условного перехода, чтобы произвести выход, как только выяснилось, что функции по каким-то причинам дальше выполняться не нужно (например, дальше идет код обработчика ошибок).


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



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