Прерывание цикла

Для досрочного завершения итерации и выхода из цикла применяется оператор Exit. Этот оператор применим в любой циклической структуре, кроме While ... Wend. Общий синтаксис использования Exit для прерывания цикла таков:

<начало_цикла> [<блок операторов1>] Exit (For | Do) [<блок операторов2>] [Exit (For | Do)] ... <конец_цикла>

При выполнении оператора Exit цикл прерывается, и управление передается оператору, следующему за оператором <конец_цикла>. В теле цикла может присутствовать несколько операторов Exit.

Листинг 12. Принудительный выход из цикла

Sub sample9() For i = 1 To 10000000 If i = 10 Then Exit For ' выход из цикла, когда счетчик достигнет 10 Next End Sub

VBA поддерживает два типа подпрограмм: процедуры и функции.

· Функция — это подпрограмма, которая возвращает результат. Вызов функции является выражением, и может использоваться в других выражениях или в правой части оператора присваивания.

· Процедура — это любая подпрограмма, которая не является функцией. Любой макрос VBA является подпрограммой типа "процедура".

Для объявления процедуры в VBA используется ключевое слово Sub:

Sub <имяПроцедуры> [(<списокПараметров>)] <операторы> End Sub

где:

<имяПроцедуры> – любой допустимый идентификатор VBA;

<списокПараметров> – список формальных параметров процедуры, если он пуст, то такая процедура является макросом;

<операторы> - любая последовательность операторов VBA.

Листинг №.13 Пример объявления процедуры

' Процедура выводит в отладчик максимальное из трех чисел Sub sMax3(A As Long, B As Long, C As Long) If (A > B) And (A > C) Then Debug.Print "Max is "; A ElseIf (B > A) And (B > C) Then Debug.Print "Max is "; B Else Debug.Print "Max is "; C End If End Sub

Синтаксис объявления функции несколько сложнее, чем синтаксис процедуры:

Function <имяФункции> [(<списокПараметров>)] [As <типФункции>] <операторы> . . . <имяФункции> = <возвращаемое_значение> [<операторы>] End Function

где:

<имяФункции> - любой допустимый идентификатор;

<списокПараметров> – список формальных параметров процедуры;

<типФункции> - имя любого поддерживаемого VBA типа данных;

<операторы> - любая последовательность операторов VBA.

<возвращаемое_значение> - результат, передаваемый в вызывающую программу.

Листинг №14. Пример объявления функции

' Функция возвращает максимальное из трех чисел Function fMax3(A As Long, B As Long, C As Long) As Long If (A > B) And (A > C) Then fMax3 = A ElseIf (B > A) And (B > C) Then fMax3 = B Else fMax3 = C End If End Function