Разработка процедур и функций
Процедуры VBA бывают двух типов:
• процедуры обработки событий;
• общие процедуры.
Имя процедуры обработки события, связанного с элементом управления, состоит из имени элемента управления, символа подчеркивания и имени события, например Закрытъ_ click – процедура обработки нажатия кнопкиЗакрыть в форме.
Общие процедуры VBA могут храниться в любом типе модулей VBA, так как они не связаны с конкретным объектом. Они выполняются только тогда, когда явно вызываются другими процедурами. Обычно эти процедуры реализуют какие-то общие действия, которые могут вызываться разными процедурами обработки событий.
Процедуры, как и переменные, должны быть объявлены до того, как они могут быть вызваны. Объявления общих процедур помещаются в разделе General (Общая область) модуля. Процедуры обработки событий хранятся в разделах модуля формы или отчета, соответствующих связанным с этими процедурами объектам.
В свою очередь, процедуры VBA делятся на подпрограммы и функции. Они являются фрагментами программного кода, который заключается между операторами Sub и End Sub или между FunctioNи End FunctioNсоответственно. Процедуры-подпрограммы выполняют действия, но не возвращают значение, поэтому они не могут быть использованы в выражениях. Процедуры обработки событий представляют собой процедуры-подпрограммы. Процедуры-функции всегда возвращают значение, поэтому они обычно используются в выражениях. Общие процедуры могут быть как процедурами-подпрограммами, так и процедурами-функциями.
|
|
Синтаксис процедуры-подпрограммы VBA:
Sub <имяПроцедуры> (<аргумент1>, <аргумент2>, …) <оператор1>
<оператор2>
End Sub
Список аргументов у процедуры может отсутствовать и может содержать необязательные аргументы.
Объявление каждого аргумента имеет следующий синтаксис:
<имяАргумента> [As <типДанных> [=<значениеПоУмолчанию>]],
где <имяАргумента>– идентификатор, составленный согласно правилам создания имен и представляющий аргумент в теле процедуры;
<типДанных>– это либо встроенный тип данных, либо тип, определенный пользователем. Тип данных аргумента может не указываться, и тогда считается, что он имеет тип Variant. Аргументом процедуры может быть и массив. Тогда после имени аргумента должны стоять круглые скобки.
Для необязательного аргумента может быть указано <значение по умолчанию>, которое будет использоваться, если этот аргумент будет опущен. Если значение по умолчанию не указано, необязательный аргумент инициируется точно так же, как переменная, т. е. числовой аргумент – в 0, строковый – в строку нулевой длины и т. д.
Описание функции:
|
|
FunctioN<имяФункции> (<аргумент1>, <аргумент2>, …) [As
<типЗначение>]
<оператор1>
<оператор2>
<имяФункции> = <возвращаемоеЗначение>
End Function
Кроме того что ключевое слово Sub заменяется на Function, в теле функции обязательно присутствует оператор присваивания имени функции какого-нибудь значения. Это значение и возвращается функцией. В заголовке функции может быть описан тип возвращаемого значения. Если этот тип не указан, функция возвращает значение Variant.
Передача аргументов процедурам и функциям
Аргументы с определенными типами используются по тем же причинам, по каким используются типизированные переменные или результаты функции. Определение типов аргументов для функции-процедуры помогает пользователю при вызове функции вводить аргументы правильного типа в правильном порядке. Синтаксис элемента Arglist:
[Optional] [ByVal | ByRef] [ParamArray] имяПеременной_
[As тип] [= поУмолчанию]
Optional– ключевое слово, указывающее, что аргумент не является обязательным. При использовании этого элемента все последующие аргументы, которые содержатся в спискеArglist, также должны быть необязательными и описаны с помощью ключевого словаOptional;
Function Name (tstr As String, Optional nChar As Long) As String
|
|
ByVal– указывает, что этот аргумент передается по значению;
ByRef– указывает, что этот аргумент передается по ссылке. ОписаниеByRefиспользуется в VBA по умолчанию;
ParamArray– ключевое словоParamArrayпозволяет задавать произвольное количество аргументов. Оно не может быть использовано со словамиByval,ByRefилиOptional.
= поУмолчанию– значение аргумента по умолчанию.
Для объявления определенных типов аргументов функции-процедуры, используется ключевое слово As, за которым следует имя нужного типа данных после имени аргумента в списке аргументов.
Пример 2.Определение типа данных аргумента функцииLenTrim
FunctionLenTrim(tStr As String) As Long
'возвращает длину tStr без ведущих и хвостовых пробелов
LenTrim = Len(Trim(tStr))
End Function
Подпрограммы
Подпрограмма– представляет собой определенный набор операторов, составленный пользователем и расположенный отдельно от основной программы. Подпрограммаимеетследующийсинтаксис:
[Private | Public] [Static] Sub Name([Arglist]) [As Type]
'комментарий, описывающий функцию
[Инструкции]
[Exit Sub]
[Инструкции]
End Sub
Дата добавления: 2018-02-28; просмотров: 385; Мы поможем в написании вашей работы! |
Мы поможем в написании ваших работ!