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

Управление выполнением программы

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

Инструкция Call

Инструкция Call используется для передачи управления процедуре Sub.

Синтаксис:

Call имя-подпрограммы [(<аргументы>)] или

имя-подпрограммы [<аргументы>] где <аргументы> — это

{ [ByVal | ByRef] <выражение>}, . . .

Пояснения:

Имена переменных, передаваемых подпрограмме вызывающей процедурой, могут отличаться от имен формальных аргументов. Ключевые слова ByVal и ByRef применяютя в инструкции Call только в определенных обстоятельствах, например при вызове процедуры из библиотеки динамической компоновки (DLL). Если при описании аргумента используется ключевое слово ByVal, то VBA передает подпрограмме копию аргумента, и подпрограмма не может изменить значение исходной переменной в вызывающей процедуре. Выражение всегда передается по значению независимо от того, как описан соответствующий формальный аргумент подпрограммы. При использовании ключевого слова ByRef VBA передает адрес переменной, позволяя процедуре изменять фактическое значение переменной.

Примеры:

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

Call MySub (intMyInteger, curPrice * intQty) Другой синтаксически правильный способ вызова —

MySub intMyInteger, curPrice * intQty

Инструкция Do... Loop

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

Синтаксис:

Do [{While Until} <условие>]

[<инструкции-тела-цикла>]

[Exit Do]

[<инструкции-тела-цикла>] Loop или

Do

[<инструкции-тела-цикла>] [Exit Do]

[<инструкции-тела-цикла>] Loop [{While I Until} <условие>]

Пояснения:

<условие> может быть любым выражением, которое Microsoft Access может оценить как True (ненулевое значение) либо False (ноль или Null). Предложение While (Пока) действует противоположным образом по сравнению с предложением Until (До). При использовании предложения While выполнение блока инструкций цикла продолжается до тех пор, пока условие имеет значение True. Если задано предложение Until, выполнение блока инструкций прекращается, как только условие принимает значение True. Когда предложение While или Until находится в начале инструкции Do... Loop (то есть в предложении Do), то условие проверяется до выполнения тела цикла, но если вы поместите предложение While или Until в конце инструкции Do...Loop (в предложении Loop), то VBA выполняет инструкции тела цикла до проверки условия.

Для выхода из цикла прежде, чем будет достигнуто предложение Loop, можно поместить одну или несколько инструкций Exit Do внутри тела цикла. Обычно инструкция Exit Do используется внутри других управляющих структур, таких как If...T hen... Else.

Пример:

Чтобы прочитать все строки таблицы tbICIubs, пока не будет достигнут конец набора записей, введите:

Dim dbEntSched As Database

Dim rcdClubs As RecordSet

Set dbEntSched = CurrentDbO

Set rcdClubs = dbEntSched.OpenRecordSet("tbICIubs")

Do Until rcdClubs.EOF

<инструкции-тела-цикла>

rcdClubs.MoveNext Loop