Операторы альтернативы (ветвления)

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

Условный оператор

IF<условие> THEN <оператор (код)>

Позволяет выполнить один или несколько операторов, если условие истинно. Можно использовать однострочный или блочный вариант. Если необходимо выполнить более одной строки кода, нужно использовать блочный вариант с оператором EndIF.

Синтаксис:

IF<условие> Then<оператор (код)>

IF<условие> Then

<блок кода >

End IF

Примеры:

IF x<10 Then z=0

IF x>10 Then

z=2

z=z+x

EndIF

Позволяет определить два блока операторов. Первый выполняется, когда условие истинно, а второй, когда оно ложно.

Пример:

IF x<>0 Then

y=Sin(x)/x

Else

y=1

EndIF

Пример ветвления по трём и более направлениям:

IF<условие 1> Then

<блок кода 1>

ElseIF<условие 2> Then

<блок кода 2>

ElseIF<условие 3> Then

<блок кода 3>

Else<блок кода 4>

EndIF

В блоке IFдопускается любое количество предложений ElseIF, но ни одно не может находиться после предложения Else.

Пример:

IF x=-1.57 Then

y=-1

ElseIF x=0 Then

y=0

ElseIF x=1.57 Then

y=1

Else y=Sin(x)

EndIF

9.3.4.2. Оператор выбора варианта

При выборе для выполнения одного из нескольких операторов (блоков операторов) целесообразно и удобно использовать инструкцию Select Case

<pСинтаксис

Select Case< переменная или выражение>

Case <значение 1>

<оператор (блок операторов) 1>

Case <значение 2>

<оператор (блок операторов) 2>

Case <значение 3>

<оператор (блок операторов) 3>

End Select

Пример применения оператора выбора в подпрограмме-функции:

Function PR(ByVal S As Single, ByVal P As Integer) As Single

Select Case P

Case 0

PR=S*0

Case 1

PR=S*0.10

Case 2

PR=S*0.15

Case 3

PR = S*0.20

End Select

End Function

Sub Krb()‘Пример программы, показывающий вызов подпрограммы функции<

Dim S As Single

Dim Sum As Single

Dim P As Integer

Dim Prom As Variant

S = 5000

Prom = InputBox(“Введите номер варианта <от 0 до 5>”)

IF Not IsNumeric(Prom) Then MsgBox(“Повторите ввод!”)

Loop Until IsNumeric(Prom)

P = Prom

Sum=PR(S,P) ‘Вызов процедуры-функции. Оператор вызова PR(S,P).

MsgBox(“Значение S=”) & CSng(S)

End Sub

Допускается вложенность инструкций Select Case. При этом каждой вложенной инструкции Select Case должна соответствовать инструкция End Select.

Операторы циклов

DO LOOP

Позволяет выполнить блок кода неопределенное количество раз. Существует несколько вариантов этого оператора, но в каждом из них проверяется условие и по результатам проверки определяется необходимость продолжения цикла. Результатом логического выражения условия должно быть True или False.

Циклы с предусловием

DO WHILE <условие> … LOOP

Оператор DO WHILE <условие> … LOOP позволяет проверить условие перед началом цикла и выполнять цикл до тех пор, пока оно имеет значение True. Как только условие цикла примет значение False, выполнение цикла прекратится.

Пример:

Dim X As Integer ‘Описание переменной X целого типа.

X=0 ‘Начальное значение переменной X.

DO WHILE X<=10 ‘Пока Х<=10, цикл будет повторятся.

X=X+1 ‘Изменение значения переменной Х.

LOOP ‘Конец цикла.

Другой вариант инструкции такого цикла:

WHILE <условие>… WEND

Пример:

X=0

WHILE X<12

y=Cos(x)

X=X+1

WEND

DO UNTIL <условие> … LOOP

Оператор Do Until <условие> … Loop позволяет проверить условие перед началом цикла и выполнять цикл до тех пор, пока оно False. Как только условие цикла станет равно True, выполнение цикла прекратится.

Пример:

Dim X As Integer ‘Описание переменной X целого типа.

X=0 ‘Начальное значение переменной X.

Do Until X>10‘Пока Х<=10, цикл будет повторятся.

X=X+1 ‘Изменение значения переменной Х.

LOOP ‘Конец цикла.

Циклы с постусловием

DO … LOOP WHILE <условие>

Если операторы цикла необходимо выполнить хотя бы раз, то нужно применять цикл с постусловием.

Инструкция Do … Loop While <условие> позволяет проверить условие после выполнения операторов тела цикла.

Цикл будет повторяться до тех пор, пока выражение в условии цикла имеет значение True. Как только условие цикла примет значение False, выполнение цикла прекратится.

Пример:

Dim X As Integer

X=0

Do

X=X+1

Loop While X<=10‘До тех пор, пока Х<=10, цикл повторяется

DO … LOOP UNTIL <условие>

В отличие от предыдущего этот цикл будет выполняться до тех пор, пока значение условия равно False.

Пример:

Dim X As Integer

X=0

Do

X=X+1

Loop Until X>10‘Как только переменная станет больше десяти, выполнение цикла прекратится.

Наши рекомендации