Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Модули Access.docx
Скачиваний:
12
Добавлен:
24.09.2019
Размер:
62 Кб
Скачать
☆

Инструкция Sub

Инструкция Sub используется для объявления новой подпрограммы, описания ее аргументов и исходного текста процедуры.

Синтаксис:

[Public | Private] [Static] Sub имя-подпрограммы —».

([<аргументы>]) [As тип-данных]

[ <инструкции-тела-подпрограммы> ]

[Exit Sub]

[ <инструкции-тела-подпрограммы> ] End Sub

где <аргументы> — это

{ [Optional] [ByVal | ByRef] [ParamArray] имя-аргумента —а. [As тип-данных} } , . . .

Пояснения:

Подпрограмма, описанная с ключевым словом Public, доступна для всех процедур во всех модулях. Ключевое слово Private ограничивает доступность процедуры Sub модулем, содержащим ее описание.

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

Следует объявлять типы данных для всех аргументов процедуры Sub. Обратите внимание, что имена переменных, передаваемых вызывающей процедурой, могут отличаться от имен формальных аргументов подпрограммы. Если при описании аргумента используется ключевое слово ByVal, то VBA передаст подпрограмме копию соответствующего аргумента. Любые изменения аргумента, объявленного с ключевым словом ByVal, не влияют на исходную переменную в вызывающей процедуре. Если фактический аргумент, передаваемый процедуре при ее вызове, представляет собой выражение, VBA рассматривает его так, как если бы аргумент в процедуру передавался по значению. Ключевое слово ByRef указывает, что аргумент передается по ссылке. В этом случае VBA передает адрес переменной, что позволяет процедуре Sub изменять фактическое значение переменной. Учтите, что VBA всегда передает массивы только по ссылке.

Ключевое слово Optional используется для описания необязательного аргумента типа Variant. В этом случае все последующие аргументы процедуры Sub также должны быть необязательными и описываться с помощью ключевого слова Optional. Отсутствие необязательного аргумента можно проверить с помощью встроенной функции IsMissing. Для описания массива необязательных элементов типа Variant служит ключевое слово ParamArray. При последующем вызове подпрограммы вы можете передавать ей произвольное число аргументов. Аргумент, описанный с использованием ключевого слова ParamArray, должен быть последним в списке аргументов процедуры Sub.

Инструкцию Exit Sub можно использовать в любом месте тела подпрограммы. Это гарантирует очистку ошибок и нормальный выход из подпрограммы с возвратом в вызывающую процедуру. Если при выполнении процедуры Sub произошла ошибка и работа подпрограммы завершается по инструкции End Sub, то управление передается вызывающей процедуре без очистки ошибки. (Более подробно обработка ошибок рассматривается в разделе «Обработка ошибок» этой главы.)

Пример:

Чтобы создать подпрограмму с именем MySub, которая принимает два строковых аргумента, но может изменять только второй аргумент, введите:

Sub MySub (ByVal strArg! As String, strArg2 As _ String)

<инструкции-тела-подпрограммы> End Sub