Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
КОНСПЕКТ ЛЕКЦИЙ(рус).doc
Скачиваний:
80
Добавлен:
09.02.2016
Размер:
2.29 Mб
Скачать

Глава 17. Пользовательские процедуры типа Sub и Function в vba

17.1. Подпрограммы

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

Private Sub commandButton_click ()

End Sub

Для выполнения определенных задач разработчиком создаются пользовательские процедуры типа Sub (подпрограммы). Подпрограммы выполняются при помощи специальных операторов обращения к ним. Операторы обращения располагаются в вызывающих процедурах. Структурно это выглядит так:

Подпрограмма

Вызов

подпрограммы

Вызывающая

процедура

Возврат

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

17.2. Процедура типа Sub

Синтаксис процедуры типа Sub

[ Public | Private] [Static] Sub имя [(параметры)]

[операторы внутри процедуры]

End Sub

Public - процедура доступна для всех других процедур модулей проекта. По умолчанию процедура Sub объявлена типа Public.

Private процедура доступна для других процедур только того модуля, в котором она описана.

Static - локальные переменные процедуры сохраняются в промежутках времени между вызовами этой процедуры.

Sub - название процедуры.

имя - имя процедуры Sub устанавливается пользователем и подчиняется правилам образования имен переменных.

параметры – в простейшем случае это имена переменных, значения которых необходимо обрабатывать в процедуре SUB. Их условно можно подразделить на входные и выходные формальные параметры. Например, для заголовка процедуры: Private Sub max (ByVal N, ByVal M, R)

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

Вызов подпрограммы процедуры Sub

1 способ. Вызов выполняется отдельным оператором Call:

Call имя подпрограммы (фактические параметры).

Например:

Call max (a, b, r1)

Фактические параметры также условно делятся на входные и выходные. Например, a, b - входные фактические параметры передаются на место входных формальных параметров N, M . Выходной фактический параметр r1 принимает значения выходного формального параметра R

Sub max(ByVal N, ByVal M, R )

Call max (a, b, r1)

В данном случае говорят, что передача фактических параметров а, b на место формальных N,M происходит по Значению.

Так как при параметре R отсутствует ByVal , то r1 и R имеют одну и ту же ячейку памяти и значение R, как бы передается на место r1 ( в таком случае говорят, что передача параметра происходит по Ссылке).

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