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 <имя Процедуры> (<список фактических параметров>).
В первом случае список фактических параметров задается без скобок, во втором – использование скобок обязательно. Но всегда список фактических параметров должен полностью соответствовать списку аргументов, заданному в объявлении подпрограммы. Все фактические параметры для обязательных аргументов должны быть перечислены в том порядке, в каком они присутствуют в описании подпрограммы, после чего могут идти параметры для необязательных аргументов.
Вызов функции имеет следующий вид:
<имя переменной>=<имя функции>(<список фактических параметров>).
Например, вызов объявленной в вышеприведенном примере функции SummaVar может выглядеть следующим образом:
Dim intShelfs (I To 30) As Integer
Dim intS As Integer
Init intShelfs инициируем массив intShelfs
intS = SummaVar(1,2,3,4,5,6,7,8,9)'суммируем целые числа
Процедуры и функция выполняют следующие действия:
1) первая процедура производит суммирование двух первых введенных значений a и b;
2) вторая процедура производит умножение третьего и четвертого введенных значений c и d;
3) функция вычисляет выражение a+b-c*d.
Технология выполнения
1. Откройте приложение Word, сохраните документ и перейдите в редактор VBA.
2. Создайте форму (рис. 30).
3. Пропишите обработчик события кнопки
При создании данной программы необходимо обратить внимание на следующие моменты. В начале программы создаются глобальные переменные, область видимости которых распространяется на все создаваемые процедуры, функцию и основной блок программы.
При создании процедур происходит считывание информации с текстовых полей. Так как вся информация, введенная в текстовые поля, априори считается текстовой, то необходимо перевести данные строковые переменные в числовые. Для чего используется функция преобразования Val. Функция работает с уже вычисленными значениями в процедурах, поэтому в теле функции вызываются процедуры, точнее их результат.
Основной блок программы также вызывает процедуры и результат созданной функции. Обратите внимание на различие написания вызова значений процедур и функции.
Рис. 30. Форма примера 14 в режиме конструктора и в рабочем состоянии
Листинг примера 14