Реализация разветвляющихся алгоритмов в VBA

Операторы перехода и выбора

– позволяют организовать ветвление в программе посредством выполнения тех или иных действий в зависимости от некоторого условия. Оператор GoTo осуществляет безусловный переход, но в настоящее время используется в программах все реже.

Перечислим операторы перехода и выбора VBA.

 

Оператор безусловного перехода. Формат:

 

GoTo Строка

 

Задает безусловный переход на указанную строку внутри процедуры. Обязательный аргумент Строка может быть любой меткой строки или номером строки

 

Оператор условного перехода. Формат:

 

If <Условие> Then <Операторы 1> [Else Операторы 2]

 

Если Условие принимает значение True (истина), то выполняются операторы после Then, иначе выполняются операторы после Else. Ветвь Else может отсутствовать.

Допускается также использование формы синтаксиса в виде блока:

 

If <Условие> Then

[Операторы 1]

[Elself <Условие-n> Then

[Операторы n]

[Else

[Операторы]]

End If

 

Оператор выбора. Формат:

 

Select Case <выражение>

[Case списокВыражений-1

[операторы-1]]

[Case списокВыражений-n

[операторы-n]]

[Case Else

[операторы_еlse]]

End Select

 

Операторы-n (необязательная часть) – один или несколько операторов, выполняемых в том случае, если выражение совпадает с любым компонентом списка список-Выражений-n.

Операторы_else (необязательная часть) – один или несколько операторов, выполняемых в том случае, если выражение не совпадает ни с одним из предложений Case.

 

Активизация подпрограммы обработки ошибок.

Оператор

 

On Error GoTo строка

 

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

 

Sub InitializeMatrix(Varl, Var2, Var3, Var4)

On Error GoTo M1

…………………..

Exit Sub

M1:

…………………..

Resume Next

End Sub

 

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

On Error Resume Next указывает, что при возникновении ошибки происходит передача управления на инструкцию, непосредственно следующую за инструкцией, вызвавшей ошибку.

On Error GoTo 0 отключает любой активизированный обработчик ошибок в текущей процедуре