Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Глава19.docx
Скачиваний:
3
Добавлен:
25.08.2019
Размер:
2.42 Mб
Скачать

Глава 19. Инструментальные средства пользователя в среде microsoft office

Объявление аргументов в заголовке процедуры имеет стандартный вид: Sub ProcJB (Vail As Single; Val2 As Date;...)

Через выбранный разделитель списков (в зависимости от настройки Windows — запя­тая или точка с запятой) следуют аргументы с указанием имени и типа значения.

Если аргумент необязательный, т.е. может не задаваться при вызове процедуры, ука­зывается ключевое слово Optional.

Пример 19.18. Процедура вычисления площади прямоугольника по двум сторонам

I

Текст программы

Комментарий

Sub SquarPr (L As Single; H As Single; S As Single; Optional F)

If IsMissing( F) Then F=100

S=L*H End Sub

Объявление процедуры SquarPr и ее аргументов

Встроенная функция VBA — IsMissing проверяет наличие аргумента F, если F не задано, по умолчанию F присваивается значение 100 (F имеет тип Variant)

Вычисление площади прямоугольника Конец процедуры

Вызов такой процедуры выполняется различным образом.

1-й вариант — непосредственное задание значений аргументов при вызове процедуры

Текст программы

Комментарий

Sub Proc_A () Dim Sq as Single SquarPr 12; 23; Sq

End Sub

Вызывающая процедура

Вызов процедуры с передачей значений длин сторон прямоугольника в явном виде, результат вычисления будет присвоен переменной Sq

Конец процедуры

2-й вариант — через имена переменных, которым присвоены значения

Текст программы

Комментарий _

Sub Proc_A ()

Вызывающая процедура

Dim Sq as Single Dim LL as Single Dim HH as Single

Объявление переменных ПЛОЩАДЬ ДЛИНА ВЫСОТА

LL=12 HH=23

Присвоение значений переменным

SquarPr LL HH Sq

Вызов процедуры с передачей значений длин сторон прямоугольника в явном виде, результат вычисления будет присвоен переменной Sq

End Sub

Конец процедуры

19.2. СОЗДАНИЕ ПРИЛОЖЕНИИ НА ЯЗЫКЕ VISUAL BASIC FOR APPLICATIONS

701

3-й вариант — использование списка поименованных аргументов при вызове процедуры

Текст программы

Комментарий

Sub Proc_A ()

Вызывающая процедура

Объявление переменных

Dim Sq as Single

ПЛОЩАДЬ

Dim LL as Single

ДЛИНА

Dim HH as Single

ВЫСОТА

LL=12

Присвоение значений переменным

HH=23

SquarPr L:=LL; H:=HH; S:=Sq

Вызов процедуры с указанием соответ-

ствия имен аргументов вызываемой

процедуры и имен переменных

вызывающей процедуры, которые

разделяются в строке знаком:

End Sub

Конец процедуры

При завершении работы вызываемой процедуры и передаче управления вызываю­щей процедуре происходит потеря значений переменных, объявленных в вызываемой про­цедуре.

Для предотвращения этого сохраняемые переменные следует объявлять оператором:

Static <var> As <type>

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

Для модификации заголовка процедуры выполняется указание ключевого слова By Val перед именами аргументов, значение которых не изменится внутри процедуры.

Пример 19.19.

Sub SquarPr (By Val L As Single; By Val H As Single; S As Single)

S=L*H

L=10

H=20

End Sub

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

Пример 19.20.

Текст программы

Комментарий

Sub Proc_A ()

Вызывающая процедура

Объявление переменных

Dim Sq as Single

ПЛОЩАДЬ

Dim LL as Single

ДЛИНА

Dim HH as Single

ВЫСОТА

LL=12

Присвоение значений переменным

HH=23

SquarPr L:=(LL); H:=(HH); S:=Sq

Преобразование аргумента в формулу

End Sub

Конец процедуры

702