Офисное программирование

ОглавлениеДобавить в закладки К обложке

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

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

Обычно подпрограмма вызывается из другой подпрограммы или функции с помощью специального оператора 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)'суммируем целые числа

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

Процедуры и функция выполняют следующие действия:

1) первая процедура производит суммирование двух первых введенных значений a и b;

2) вторая процедура производит умножение третьего и четвертого введенных значений c и d;

3) функция вычисляет выражение a+b-c*d.

Технология выполнения

1. Откройте приложение Word, сохраните документ и перейдите в редактор VBA.

2. Создайте форму (рис. 30).

3. Пропишите обработчик события кнопки Счет.

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

При создании процедур происходит считывание информации с текстовых полей. Так как вся информация, введенная в текстовые поля, априори считается текстовой, то необходимо перевести данные строковые переменные в числовые. Для чего используется функция преобразования Val. Функция работает с уже вычисленными значениями в процедурах, поэтому в теле функции вызываются процедуры, точнее их результат.

Основной блок программы также вызывает процедуры и результат созданной функции. Обратите внимание на различие написания вызова значений процедур и функции.

Рис. 30. Форма примера 14 в режиме конструктора и в рабочем состоянии

Листинг примера 14

Dim a, b, c, d, k, m, h As Integer

Sub summ()

a = Val(TextBox1.Text)

b = Val(TextBox2.Text)

k = a + b

End Sub

Sub umn()

c = Val(TextBox3.Text)

d = Val(TextBox4.Text)

m = c * d

End Sub

Function prim() As Integer

Call summ

Call umn

prim = k – m

End Function

Private Sub CommandButton1_Click()

Call summ

Call umn

' переменные a и b являются глобальными для запуска функции prim, где k, m являются локальными переменными в соответствующих процедурах

h = prim(a, b)

Label8.Caption = «сумма a + b =» & k

Label9.Caption = «произведение c * d =» & m

Label10.Caption = "значение функции a+b-c*d= " & h

End Sub

4. Откомпилируйте программу.

5. Запустите форму на выполнение.

Пример 15. Создать программу, которая, используя данные, считанные из текстовых полей формы, выполняет вычисление значений двух выражений: y = sin(a + b) + 5 и z = tg(c + + 3) – cos(3 * d), где a, b, c, d – значения переменных, введенных в соответствующие текстовые поля (рис. 31). Данные значения y и z вычисляются в соответствующих процедурах (процедуре) или функциях. Основной блок программы сравнивает полученные значения, и об этом выдается сообщение на форму.


Логин
Пароль
Запомнить меня