Разработка процедур и функций



Процедуры 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; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!