Использование условного оператора неотъемлемая часть практически любого языка программирования. И фактически, все исходит от математики, так как изначально, языки программирования формировались как средства для решения различных задач. Скажу сразу, статья скучная и неинтересная Так как выжать что новое из программирования, в частности из описания операторов просто физически невозможно, но я что-то да придумаю. И так, в языке VBA для проверки условий используется оператор if, который может существовать в нескольких вариациях. Но сперва, немного юмора….
![Условный VBA оператор if vba if then](https://scriptcoding.ru/picture/vba-if-then.png)
Бежит заяц по лесу и видим медведя, читающего книгу. Заяц спрашивает: “Косолапый, ты что читаешь?” Тот с умным видом отвечает: “Логику”. Косой с удивленным видом спрашивает “А что такое логика?” “Ну смотри” – говорит медведь:
- М: У тебя спички есть?
- З: Нет
- М: Значит, ты не куришь
- З: Да!
- М: Если ты не куришь, значит, нет лишних трат денег
- З: Верно!
- М: Значит, ты ходишь по девкам?
- З: Конечно!
- М: А раз ты ходишь по девкам, значит, ты не импотент!
- З: Снова верно!
Заяц обрадовался столь умной книге и попросил почитать ее у косолапого. Идет по лесу довольный и радуется, тут ему навстречу волк идет. Заяц решил испробовать логику на сером и спрашивает его:
- З: У тебя спички есть?
- В: Да
- З: Значит ты импотент!
Хорошо, теперь давайте приступим к теории…
Вариант 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 if then else vba - результат](https://scriptcoding.ru/picture/vba-if-then-1.png)
Хорошо, теперь напишем простой пример использования конструкции 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 четвертого текстового поля.