Перейти к содержимому

VBA Excel. Оператор If…Then…Else и функция IIf

Однострочная и многострочная конструкции оператора If...Then...Else и функция IIf, используемые в коде VBA Excel - синтаксис, компоненты, примеры.

  1. Оператор If...Then...Else
  2. Функция IIf

Оператор If...Then...Else

Оператор If...Then...Else предназначен для передачи управления одному из блоков операторов в зависимости от результатов проверяемых условий.

Однострочная конструкция

Оператор If...Then...Else может использоваться в однострочной конструкции без ключевых слов Else, End If.

Синтаксис однострочной конструкции If...Then...

If [условие] Then [операторы]

Компоненты однострочной конструкции If...Then...

  • условие - числовое или строковое выражение, возвращающее логическое значение True или False;
  • операторы - блок операторов кода VBA Excel, который выполняется, если компонент условие возвращает значение True;

Если компонент условие возвращает значение False, блок операторов конструкции If...Then... пропускается и управление программой передается следующей строке кода.

Пример 1

Sub primer1()
Dim d As Integer, a As String
d = InputBox("Введите число от 1 до 20", "Пример 1", 1)
   If d > 10 Then a = "Число " & d & " больше 10"
MsgBox a
End Sub

Многострочная конструкция

Синтаксис многострочной конструкции If...Then...Else

If [условие] Then
[операторы]
ElseIf [условие] Then
[операторы]
----------------
Else
[операторы]
End If

Компоненты многострочной конструкции If...Then...Else:

  • условие - числовое или строковое выражение, следующее за ключевым словом If или ElseIf и возвращающее логическое значение True или False;
  • операторы - блок операторов кода VBA Excel, который выполняется, если компонент условие возвращает значение True.
  • пунктирная линия обозначает дополнительные структурные блоки ElseIf [условие] Then + [операторы];
  • блок операторов после ключевого слова Else выполняется в любом случае, но структурный блок кода Else + [операторы] не является обязательным и может быть пропущен.

Если компонент условие возвращает значение False, следующий за ним блок операторов конструкции If...Then...Else пропускается и управление программой передается следующей строке кода.

Самый простой вариант многострочной конструкции If...Then...Else:

If [условие] Then
[операторы]
Else
[операторы]
End If

Пример 2

Sub primer2()
Dim d As Integer, a As String
d = InputBox("Введите число от 1 до 40", "Пример 2", 1)
   If d < 11 Then
      a = "Число " & d & " входит в первую десятку"
   ElseIf d > 10 And d < 21 Then
      a = "Число " & d & " входит во вторую десятку"
   ElseIf d > 20 And d < 31 Then
      a = "Число " & d & " входит в третью десятку"
   Else
      a = "Число " & d & " входит в четвертую десятку"
   End If
MsgBox a
End Sub

Функция IIf

Функция IIf проверяет заданное условие и возвращает значение в зависимости от результата проверки.

Синтаксис функции

IIf([условие], [если True], [если False])

Компоненты функции IIf

  • условие - числовое или строковое выражение, возвращающее логическое значение True или False;
  • если True - значение, которое возвращает функция IIf, если условие возвратило значение True;
  • если False - значение, которое возвращает функция IIf, если условие возвратило значение False.

Пример 3

Sub primer3()
Dim d As Integer, a As String
d = InputBox("Введите число от 1 до 20", "Пример 3", 1)
   a = IIf(d < 10, d & " - число однозначное", _
   d & " - число двузначное")
MsgBox a
End Sub

При нажатии кнопки «Cancel» или закрытии крестиком диалогового окна InputBox из примеров, генерируется ошибка, так как в этих случаях функция InputBox возвращает пустую строку. Присвоение пустой строки переменной d типа Integer вызывает ошибку. При нажатии кнопки «OK» диалогового окна, числа, вписанные в поле ввода в текстовом формате, VBA Excel автоматически преобразует в числовой формат переменной d.

Добавить комментарий

Ваш комментарий будет опубликован после прохождения обязательной модерации. Исходящие ссылки не допускаются. Время модерации составит от нескольких минут до нескольких часов в зависимости от времени суток и занятости модератора.