Использование условного оператора неотъемлемая часть практически любого языка программирования. И фактически, все исходит от математики, так как изначально, языки программирования формировались как средства для решения различных задач. Скажу сразу, статья скучная и неинтересная Так как выжать что новое из программирования, в частности из описания операторов просто физически невозможно, но я что-то да придумаю. И так, в языке VBA для проверки условий используется оператор if, который может существовать в нескольких вариациях. Но сперва, немного юмора….

Бежит заяц по лесу и видим медведя, читающего книгу. Заяц спрашивает: “Косолапый, ты что читаешь?” Тот с умным видом отвечает: “Логику”. Косой с удивленным видом спрашивает “А что такое логика?” “Ну смотри” – говорит медведь:
- М: У тебя спички есть?
- З: Нет
- М: Значит, ты не куришь
- З: Да!
- М: Если ты не куришь, значит, нет лишних трат денег
- З: Верно!
- М: Значит, ты ходишь по девкам?
- З: Конечно!
- М: А раз ты ходишь по девкам, значит, ты не импотент!
- З: Снова верно!
Заяц обрадовался столь умной книге и попросил почитать ее у косолапого. Идет по лесу довольный и радуется, тут ему навстречу волк идет. Заяц решил испробовать логику на сером и спрашивает его:
- З: У тебя спички есть?
- В: Да
- З: Значит ты импотент!
Хорошо, теперь давайте приступим к теории…
Вариант 1. Самый простой вариант использования условного оператора VBA if, это когда идет проверка условия, и если оно выполняется, то идет выполнение одного выражения:
If условие then выражение
Вариант 2. Может возникнуть ситуация, когда после проверки условия надо выполнить несколько выражений, в таком случае оператор if принимает вид:
If условие then
Выражение 1
Выражение 2
Выражение N
End If
Как видим, в данном случае используется закрывающий блок if … end if, он актуален и в том случае, когда операторы вложены.
Вариант 3: Чтобы не создавать вложенных условных операторов, используется следующая конструкция:
If условие then
Выражение 1
Else
Выражение 2
End if
Тут все предельно просто, если условие истинно, выполняется первое выражение, если нет – второй. Стоит помнить, что после проверки условия могут следовать несколько операторов, как в варианте выше.
Вариант 4: Проверка нескольких условий:
If условие 1 then
Выражения 1
ElseIf условие 2 then
Выражения 2
ElseIf условие 3 then
Выражения 3
….
[else]
End if
Логика работы такова: сначала идет проверка первого условия, если оно истинно, то выполняются первые выражения и после происходит переход к оператору, что следует за End If. Если же первое условие не выполняется, происходит проверка второго и так далее, использование выражения Else в конце не является обязательным, за ним может следовать оператор, который должен выполниться, если ни одно из предыдущих условий не выполнилось.

Хорошо, теперь напишем простой пример использования конструкции VBA if then. Создайте форму в редакторе Visual Basic for Applications и добавьте на ее поверхность три текстовые метки (объект Label) и одну кнопку (объект CommandButton). В редакторе кодапропишем:
Private Sub GetSub() Dim MySumm As Integer Dim MyVar As Byte MyVar = 0 Do While MySumm <= 10000 MySumm = MySumm + 1 If MySumm = 10 Then Label1.Caption = "Сумма достигла значения 10" ElseIf MySumm = 100 Then Label2.Caption = "Сумма достигла значения 100" ElseIf MySumm = 1000 Then Label3.Caption = "Сумма достигла значения 1000" Else Label4.Caption = "Достигнуто значение " & MySumm End If Loop End Sub Private Sub CommandButton1_Click() Call GetSub End Sub Private Sub UserForm_Initialize() Label1.Caption = "" Label1.FontSize = 13 Label1.ForeColor = vbRed Label2.Caption = "" Label2.FontSize = 13 Label2.ForeColor = vbGreen Label3.Caption = "" Label3.FontSize = 13 Label3.ForeColor = vbBlue Label4.Caption = "" Label4.FontSize = 13 CommandButton1.Caption = "Выполнить" End Sub |
В процедуре GetSub происходит использование цикла VBA do loop, условие выполнение цикла – значение переменной MySumm должно быть меньше или ровно 10000. В теле самого цикла используются операторы VBA if then с несколькими вариантами. Происходит проверка условий: если сумма достигла значения 10, то записать в первое текстовое поле одну информацию, если 100 – другую информацию, если 1000 – третью информацию, в противном случае – записать данные в свойство Caption четвертого текстового поля.