Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
курсовая / Источники / excel_2010_professionalnoe_programmirovanie_na_vba_RuLit_Me_412629.pdf
Скачиваний:
4
Добавлен:
27.09.2025
Размер:
22.97 Mб
Скачать

Глава

Работа с процедурами VBA

Вэтой главе...

О процедурах

Выполнение процедуры

Передача аргументов процедурам

Обработка ошибок

Реальный пример

Процедура содержит группу операторов VBA, которые решают поставленную задачу. Большая часть кода VBA содержится в процедурах. Данная глава посвящена процедурам (Sub), которые выполняют действия, но не возвращают дискретных значений.

О процедурах

Процедура— это последовательность операторов VBA, расположенная в модуле VBA, доступ к которому можно получить с помощью VBE. Модуль может включать лю­ бое количество процедур.

Существует несколько способов вызвать, или выполнить, процедуры. Процедура вы­ полняется от начала до конца (этот процесс также можно прервать).

Совет

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

254

Часть III. Visual Basic for Applications

Некоторые процедуры получают аргументы. Аргумент — это информация, исполь­ зуемая процедурой в процессе выполнения. Аргументы процедуры во многом подобны аргументам, используемым функциями Excel. Инструкции в процедуре обычно выпол­ няют логические операции над аргументами, а результаты процедуры обычно основаны на представляемых ей значениях аргументов.

Перекрестная ссылка

©VBA также поддерживает процедуры-функции (Function), которые будут рас­ смотрены в главе 10. В главе 11 вы найдете ряд дополнительных примеров процедур, как Sub, так и F u n ctio n , которые можно использовать в собст­

венных целях.

Объявление процедуры Sub

При объявлении процедуры с использованием ключевого слова Sub применяется следующий синтаксис.

[P riv a te

| P u b lic ] [S ta tic ] Sub и м я { [ список_аргум ент ов] )

 

[инст рукции]

 

[E x it

Sub]

 

[инст рукции]

End

Sub

 

P r iv a te (необязательное ключевое слово). Указывает на то, что процедура до­

 

ступна только для других процедур в том же модуле.

P u b lic (необязательное ключевое слово). Указывает на то, что процедура до­

ступна для всех остальных процедур во всех модулях рабочей книги. При исполь­ зовании в модуле, содержащем оператор O p tio n P r iv a te Module, процедура будет недоступна за пределами проекта.

S t a t i c (необязательное ключевое слово). Указывает на то, что переменные про­ цедуры сохраняются после окончания процедуры.

Sub (обязательное ключевое слово). Обозначает начало процедуры.

Имя. Любое корректное название процедуры.

С п и с о к _ а р г у м е н т о в . Представляет заключенный в скобки список переменных, содержащих аргументы, которые передаются в процедуру. Для разделения аргу­ ментов используется запятая. Если процедура не использует аргументы, то необ­ ходимо включить в объявление процедуры пустые скобки.

И н с т р у к ц и и (необязательные). Корректные инструкции VBA.

• E x it Sub (необязательный оператор). Вызывает немедленный выход из проце­ дуры до ее формального завершения.

End Sub (обязательный оператор). Указывает на завершение процедуры.

Название процедуры

Каждой процедуре нужно присвоить имя. Правила именования процедур в основном те же, что и именования переменных. В идеальном случае название процедуры должно описывать, что выполняют содержащиеся в ней операторы. Лучше всего использовать имена, включающие глагол и существительное (например, ProcessDate, P rintR eport,

Глава 9. Работа с процедурами VBA

255

Sort A rra y либо CheckFilename). Избегайте бессмысленных названий типа D o lt, Up­ date И F ix.

Некоторые программисты используют названия, которые напоминают предложе­ ния, описывающие процедуру (например, W rite R e p o rtT o T e x tF ile — записать отчет в текстовый файл, G e t_ P rin t_ O p tio n s _ a n d _ P rin t_ R e p o rt — получить параметры печати и напечатать отчет).

Примечание

За некоторыми исключениями, все инструкции VBA, находящиеся в модуле, должны содержаться в процедурах. Исключения касаются объявления пе­ ременных уровня модуля, определения пользовательских типов данных, а также некоторых других инструкций, которые определяют параметры на уровне модуля (например, O p tio n E x p lic it) .

Область действия процедуры

В предыдущей главе отмечалось, что область действия переменной определяется мо­ дулями и процедурами, в которых может использоваться переменная. Аналогичным об­ разом область действия процедуры определяет, какие процедуры могут ее вызывать.

Процедуры типа Public

По умолчанию все процедуры имеют область действия P u b lic , т.е. могут быть вы­ званы другими процедурами в любом модуле рабочей книги. При этом ключевое слово Public применять необязательно, хотя программисты включают его для ясности. При­ веденные ниже процедуры имеют область действия P u b lic .

Sub F irs t ()

'... [код процедуры]

End Sub

Public Sub Second ()

'... [код процедуры]

End Sub

Процедуры типа Private

Процедуры типа P r iv a te могут быть вызваны другими процедурами в этом же мо­ дуле, но не процедурами других модулей.

Примечание

В диалоговом окне Макрос (Macro) отображаются только процедуры уровня P u b lic . Следовательно, если имеются процедуры, которые предназначены для вызова другими процедурами в этом же модуле, необходимо объявить их как P riv a te . Благодаря этому предотвращается возможность их запуска из диалогового окна Макрос (Macro).

В следующем примере объявляется процедура типа P r iv a te с именем MySub.

Private Sub MySub ()

' ... [код процедуры]

End Sub