Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
книга1(полный конспект).docx
Скачиваний:
55
Добавлен:
23.12.2018
Размер:
49.16 Mб
Скачать

9.1. 1. Процедура Sub

Процедура Sub (или подпрограмма) – это блок кода, который выполняется в ответе на событие. Каждый VBA – макрос начинается с ключевого слова Sub, за которым следует имя макроса. Синтаксис процедуры Sub таков:

[Private|Public][Static] Sub procedurename (arguments) statements

End Sub

При вызове процедуры выполняются операторы (statements, тело макроса) между ключевыми словами Sub и End Sub. Слова Private и Public говорят о видимости области процедуры, т.е. на уровне одного модуля или нескольких. В скобках указывается список аргументов передаваемых данной процедуре от других процедур – макросов или функций. Строки, начинающиеся с символа апострофа (‘) являются комментариями и в работе макроса участия не принимают. После тела макроса следует строка, содержащая ключевое слово End Sub, которое говорит о том, что выполнение макроса закончено.

9.1.2. Процедуры Function

Кроме процедур Sub, Visual Basic содержит встроенные функции, например Sqr, Cos или Chr. Кроме того, с помощью оператора Function можно записать собственные процедуры Function.

Синтаксис процедуры Function таков:

[Private|Public][Static] Function procedurename (arguments) [As type] statements

End Function

Как и процедура Sub, процедура Function является самостоятельной и может принимать параметры, выполнять ряд операторов и изменять значения своих параметров. В отличие от процедуры Sub, процедура Function может возвращать значение в вызывающую процедуру. Существуют три различия между процедурами Sub и Function:

- вызов процедуры Function, или просто функции, в основном осуществляется заданием ее имени и параметров в правой части большого оператора или выражения (returnvalue = function ());

- процедуры Function имеют тип, как и переменные. Это определяет тип возвращаемого значения (в отсутствие ключевого слова As в операторе определения процедуры ей назначается по умолчанию тип Variant).

- возвращаемое процедурой Function значение присваивается самому имени (procedurename) процедуры. Когда процедура Function возвращает значение, его можно использовать в выражениях в программе.

Вот, например, взаимодействия между собой процедуры Sub и процедуры Function.

Данная функция вычисляет гипотенузу прямоугольного треугольника:

1: Function Hypotenuse (ByVal a As Integer, ByVal b As Integer) As Double

2: Hypotenuse = Sqr (a^2+b^2)

3: End Function

4: Sub primer1 ()

5: Dim Width As Integer

6: Dim Height As Integer

7: Dim Hyp As Double

8: Width = InputBox («Введите высоту треугольника», «Вычисление_гипотенузы»)

9: Height = InputBox («Введите основание треугольника», «Вычисление_гипотенузы»)

10: Hyp = Hypotenuse (Width, Height)

11: MsgBox Hyp

12: End Sub

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

В строке 2 записано тело функции.

В строке 3 содержится команда на окончание работы функции.

В строках 4 – 12 записан текст головной программы.

В строке 4, после ключевого слова Sub следует имя макроса «primer1». Та как это головная программа, то аргумент в скобках отсутствует.

В строках 5 – 7 записаны имена задаваемых переменных с указанием их типа.

В строках 8 – 9 вызывается встроенная в VBA функция InputBox, с помощью которой пользователь вводит данные, которые затем присваиваются переменным Width и Height. Тип возвращаемого значения функцией InputBox – это строка. Однако VBA способен самостоятельно преобразовать его к числовому типу Integer. Во избежание некоторых ошибок пользователь сам может образовать тип String(строка) в тип Integer (число), путем вызова функции CInt (). Для этого между строками 9 – 10 нужно записать:

Width = CInt (Width)

Height = CInt (height)

В строке 10 происходит вызов функции Hypotenuse в которую передаются аргументы Width и Height. Число, возвращаемое функцией присваивается переменной Hyp.

В строке 11 вызывается встроенная в VBA функция MsgBox, которая отображает на экране содержимое переменной Hyp.

В строке 12 процедура Sub завершает работу.