Количество операторов End If должно совпадать с количеством операторов If.

End If

End Sub

End Sub

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

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

1) линейный оператор условия используется для выполнения одного оператора, в зависимости от условия. Формат:

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

Конструкция [Else<Оператор2>] может отсутствовать.

Пример1 (альтернативная форма):

Sub Условие()

If Sheets("товар2").Cells(4,1 ) = "монитор" _

Then Cells(4,2).Value = 1500 Else Cells(4,2).Value = 500

‘ если значение ячейки А4 листа Товар2 имеет значение Монитор, то в ячейку В4 поместить число 1500, иначе в ячейку В4 поместить число 500.

 

Пример2 (безальтернативная форма):

 

Sub Условие1()

If Sheets("товар2").Cells(4,1 ) = "монитор" Then Cells(4,2).Value = 1500

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

 

2) Блочный операториспользуется, когда в случае истинности условия необходимо выполнить несколько программных операторов.

IF<Условие>Then

<Группа операторов1>

[Else< Группа операторов2>]

 

Где End If- указывает на окончание блока оператора If.

Операторы If могут быть вложенные друг в друга. Такое вложение операторов необходимо, если нужно проверить какое-либо условие при другом условии, которое является истинным.

Например:

Sub программа()

Dim Name, Rang As String

If Name = «Петров» Then

If Rang = «Торговый агент»

Then

Range("A10") = Name & Rang

Else

Range("A10") = "Агента с указанной фамилией в списке нет"

End If

End If

End Sub

 

 

Условия можно записывать с помощью логических операторов, например:

Sub месяц1()

If Range("A1") = 6 Or Range("A1") = 7 Or Range("A1") = 8 Then

Range("A2") = "каникулы"

Else

Range("A2") = "учебный год"

End If

End Sub

Языком VBA также предусмотрена конструкция для работы с несколькими операторами If. Она применяется в тех случаях, когда необходимо рассмотреть еще несколько условий в дополнение к исходному. Для этого служит конструкция If……Then……ElseIf. В отличии от вложенных операторов конструкция с несколькими операторами If позволяет проверить дополнительное условие, если исходное условие имеет значение ложь.

 

Пример:

Sub месяц_СПО()

Sheets("месяц").Select

If Range("A1") = 12 Then

Range("A2") = "декабрь"

ElseIf Range("A1") = 1 Then

Range("A2") = "январь"

ElseIf Range("A1").Value = 2 Then

Range("A2") = "февраль"

ElseIf Range("A1") = 3 Then

Range("A2") = "март"

ElseIf Range("A1") = 4 Then

Range("A2") = "апрель"

ElseIf Range("A1") = 5 Then

Range("A2") = "май"

Else

Range("A2") = "лето или осень"

End If

End Sub

 

Переключатели в VBA реализуются оператором Select Case, который позволяет сделать выбор из нескольких альтернативных вариантов в зависимости от значений условного выражения.

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

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

Цикл со счетчиком:

FOR СчетчикЦикла=НачальноеЗначение TO Конечное значение

[STEP Шаг]

NEXT[Счетчик цикла]

Где ключевые слова:

FOR – начало цикла

TO – разделяющее НачальноеЗначение и КонечноеЗначение

STEP – задание шага цикла

NEXT – конец цикла

 

Пример:

Sub Цикл_пример()

Dim Sum As Integer

Dim I As Integer

Sum = 0

For I = 1 To 4

Sum = Sum + 2

Next I

Range("A5") = Sum

End Sub

Этот цикл эквивалентен

четырем операторам Sum=Sum+2 (Sum=8)

Пример2:

Sub Цикл_пример2()

Dim Sum, I As Integer

Sum = 0

For I = 1 To 4

Sum = Sum + I

Next I

Range("A5") = Sum

End Sub

В данном примере сумма будет равна 10 (0+1+2+3+4)

Пример3:

Sub Цикл_пример2()

Dim Sum, I As Integer

Sum = 0

For I = 1 To 4 Step 2

Sum = Sum + I

Next I

Range("A5") = Sum

End Sub

В данном примере сумма будет равна 16 (0+1+3+5+7)