Процедуры пользователя типа Sub
Общая структура процедуры имеет вид:
Sub <имя процедуры> (<параметр1>, <параметр2>, …)
<программный код для определения процедуры>
End Sub
Часть формальных параметров, описанных в заголовке, может быть использована для ввода исходных данных, а другая часть – для записи в них результатов выполнения программного кода процедуры.
В частном случае процедура может иметь и пустой список параметров, тогда ее заголовок будет выглядеть следующим образом:
Sub <имя процедуры> ( )
Для того чтобы использовать процедуру типа Sub в основной программе, надо записать ее имя в отдельной строке и через пробел после имени указать фактические аргументы, разделив их запятыми.
По существу в предыдущих разделах рассматривались процедуры, но процедуры обработки событий, привязанные к объекту, над которым это событие совершается. Например, запись Sub CommandButton1_Click()означает, что программа выполняется, когда по кнопке CommandButton1 делается щелчок Click.
Пользовательские процедуры могут быть доступны как для отдельной формы, так и для всех форм приложения. Если текст пользовательской процедуры записывается в окне программного кода рабочего листа, то она будет доступна во всех процедурах данного листа, но недоступной в программах других листов. Если же текст пользовательской процедуры записывается в специальном окне модуля (Insert/Module) в окне Редактора Visual Basic, то она будет доступна для процедур всей книги.
Пример 7.3. Рассмотрим пример использования процедуры со списком формальных параметров. Предположим, необходимо вычислить сумму двух различных произведений:
,где.
Для решения такой задачи сначала надо создать процедуру, которая производит вычисление произведений любого количества любых сомножителей из элементов массива:
Sub product(k, z, p)
Dim i As Integer
p = 1
For i = 1 To k
p = p * z(i)
Next
End Sub
Здесь введены следующие имена для процедуры и параметров: product – имя процедуры; k – количество сомножителей в произведении; z – имя массива, произведение элементов которого перемножается; p – параметр, в котором после вычисления будет храниться значение вычисленного произведения.
Эту процедуру можно теперь использовать для решения исходной задачи:
Sub CommandButton1_Click()
Dim f(4) As Single, f1(4) As Single, S As Single
Dim p As Single, p1 As Single, i As Integer
For i = 1 To 4
f(i) = Val(InputBox("Введите f(i)"))
f1(i) = Sin(f(i))
Next
‘Обращение к процедуре
Product 4, f, p1
Product 3, f1, p2
S = p1 + p2
MsgBox S
End Sub
Здесь после ввода в память массивов f и f1 дважды вызывается процедура product. При этом первый раз в нее передаются фактические значения для формальных параметров k и z, соответственно равные 4 и f, а результат сохраняется в переменной p1. Во второй раз – значения параметров k и z, равные соответственно 3 и f1, а результат сохраняется в переменной p2.
Задание для выполнения на компьютере
1. Записать пользовательскую функцию листа для вычисления любого арифметического выражения и опробовать ее работу.
2. Создать на рабочем листе две кнопки. Одну кнопку использовать для программы вычисления выражений, представленных в таблице.
Таблица