Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Программирование VBA.pdf
Скачиваний:
374
Добавлен:
03.05.2015
Размер:
3.07 Mб
Скачать

94

2.12.4.5. Инструкции прерывания выполнения блока Exit

Имеются следующие варианты инструкции Exit:

Инструкция Exit Do позволяет выйти из цикла Do…Loop.

Инструкция Exit For позволяет выйти из цикла For…Next или

For Each…Next.

Инструкция Exit Function позволяет выйти из функции, в которой имеется данная инструкция.

Инструкция Exit Sub позволяет выйти из процедуры Sub, в ко-

торой имеется данная инструкция.

Пример

Приведённая ниже процедура ПримерExit использует инструкцию Exit для выхода из циклов For...Next и Do...Loop и процедуры Sub. Символ двоеточие используется для разделения инструкций в одной строке кода.

Sub ПримерExit ()

Dim I, MyNum

 

Do

' Устанавливается бесконечный цикл.

For I = 1 To 5 ' Цикл повторяется 5 раз.

MyNum = Int(Rnd * 10) ' Генерируется случайное число.

Select Case MyNum ' Определяется значение случайного числа.

Case 3:

MsgBox "Case 3":

Exit For

' Если 3, то выход из For...Next.

Case 2:

MsgBox "Case 2":

Exit Do

' Если 2, то выход из Do...Loop.

Case 5: MsgBox "Case 5": Exit Sub ' Если 5, то выход из процедуры. End Select

Next I

Loop

End Sub

2.12.4.6.Инструкция передачи управления выполнением процедуры подпрограмме внутри процедуры GoSub… Return

Инструкция имеет следующий формат:

GoSub метка

[инструкции или процедура]

метка

[инструкции подпрограммы]

Return

95

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

Пример

В приводимой ниже процедуре ПримерGosub вводится с клавиатуры число и выполняется подпрограмма, имеющая метку Ппр1, если число положительное, или подпрограмма, имеющая метку Ппр2, если число отри-

цательное.

Процедура

завершается

выполнением

инструкции

If Num > 0 Then MsgBox " Результат деления = " & Num.

 

Sub ПримерGosub()

Dim Num As Single

Num = InputBox("Введите положительное число")

If Num > 0 Then

GoSub Ппр1

'Подпрограмма Ппр1 выполняется,

'если пользователь вводит положительное число. Else

GoSub Ппр2 End If

If Num > 0 Then MsgBox "Результат деления = " & Num Exit Sub

Ппр1:

Num = Num / 2

Return 'Возврат из подпрограммы Ппр1

'в управление выполнением процедуры ПримерGosub.

Ппр2:

MsgBox "Введено отрицательное число " & Num Return

End Sub

2.12.4.7.Инструкция передачи управления выполнением процедуры на одну из нескольких строк кода On…GoSub и On…GoTo

Инструкции On…GoSub и On…GoTo предназначены для передачи управления выполнением программы на одну из нескольких определённых строк программы в зависимости от значения некоторого параметра. Эти инструкции имеют следующий формат:

On выражение GoSub список_назначений On выражение GoTo список _назначений

Формат инструкций On…GoSub и On…GoTo содержит следующие элементы:

96

Элемент инструкции

Описание элемента

Выражение Обязательный. Любое числовое выражение, которое имеет целое значение от 0 до 255 включительно. Если выражение

является нецелым числовым выражением, оно округляется до его оценки

Список_назначений Обязательный. Список номеров строк или меток строк, разде-

ляемых запятыми

Замечания

Значение элемента выражение определяет, к какой строке из элемента список_назначений выполняется переход. Если значение выражения меньше 1 или превышает число элементов списка, происходит одно из следующих событий:

Если выражение

 

 

то

 

 

Равняется 0

Управление

передается

инструкции,

следующей

за

 

On...GoSub или On...GoTo

 

 

 

Превышает число

Управление

передается

инструкции,

следующей

за

элементов списка

On...GoSub или On...GoTo

 

 

 

Отрицательное

Возникает ошибка

 

 

 

Больше 255

Возникает ошибка

 

 

 

В одном списке допускается совместное использование номеров и меток строк. Не существует практического ограничения на число меток и номеров строк, используемых с инструкциями On...GoSub... и On...GoTo. Однако при использовании большего число меток или номеров, чем может уместиться на одной строке, необходимо применять символ продолжения строки для распространения логической строки на несколько физических строк. Инструкция Select Case обеспечивает более структурированный и гибкий способ выполнения множественных ветвлений.

Пример

В данном примере инструкции On...GoSub и On...GoTo используются для перехода к подпрограммам и строкам с указанными метками.

Sub OnGosubGoto() Dim №_стр, Строка, n Ввод:

№_стр = InputBox("Введите номер метки/строки") If №_стр = "" Then GoTo Ввод

On №_стр GoSub М1, М2 ' Управление возвращается сюда ' после выполнения On...GoSub

On №_стр GoTo 1, 2 ' Управление не возвращается сюда ' после выполнения On...GoTo.

Exit Sub М1:

MsgBox "Выполнен переход на метку М1": Return М2:

MsgBox "Выполнен переход на метку М2": Return