Количество операторов 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)