Офисное программирование | страница 32



<типДанных> – это либо встроенный тип данных, либо тип, определенный пользователем. Тип данных аргумента может не указываться, и тогда считается, что он имеет тип Variant. Аргументом процедуры может быть и массив. Тогда после имени аргумента должны стоять круглые скобки.


Для необязательного аргумента может быть указано <значение по умолчанию>, которое будет использоваться, если этот аргумент будет опущен. Если значение по умолчанию не указано, необязательный аргумент инициируется точно так же, как переменная, т. е. числовой аргумент – в 0, строковый – в строку нулевой длины и т. д.

Описание функции:

Function <имяФункции> (<аргумент1>, <аргумент2>, …) [As

<типЗначение>]

<оператор1>

<оператор2>

<имяФункции> = <возвращаемоеЗначение>

End Function

Кроме того что ключевое слово Sub заменяется на Function, в теле функции обязательно присутствует оператор присваивания имени функции какого-нибудь значения. Это значение и возвращается функцией. В заголовке функции может быть описан тип возвращаемого значения. Если этот тип не указан, функция возвращает значение Variant.

Рассмотрим два примера объявления подпрограмм и функций.

Объявление процедуры инициализации массива

Sub Init (arr() As Integer)

Dim i As Integer, str As String

For i * LBound(arr) To UBound(arr)

str = "Введите количество книг на полке № " & I

arr(i) = InputBox(str) 'функция ввода строки

Next I

End Sub

Объявление функции, подсчитывающей сумму любого числа аргументов

Function SummaVar(ParamArray varArg() As Variant) As Integer

Dim intSum As Integer, numb As Variant

For Each numb In varArg 'цикл по всем элементам массива

intSum = intSum + numb 'по умолчанию инициируется в 0

Next numb

SummaVar = intSum 'присвоение возвращаемого значения

End Function

Вызов подпрограмм и функций

Чтобы использовать написанную подпрограмму или функцию, ее нужно вызвать. Вызов процедуры-подпрограммы отличается от вызова процедуры-функции.

Обычно подпрограмма вызывается из другой подпрограммы или функции с помощью специального оператора VBA. Если она имеет аргументы, ей передается список фактических параметров.

Оператор вызова подпрограммы может использоваться в двух формах:

<имя Процедуры><список фактических параметров>

или

Call <имя Процедуры> (<список фактических параметров>).

В первом случае список фактических параметров задается без скобок, во втором – использование скобок обязательно. Но всегда список фактических параметров должен полностью соответствовать списку аргументов, заданному в объявлении подпрограммы. Все фактические параметры для обязательных аргументов должны быть перечислены в том порядке, в каком они присутствуют в описании подпрограммы, после чего могут идти параметры для необязательных аргументов.