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

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

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

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

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

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

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

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

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

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

Пример 1

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

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

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

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

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

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

Пример 2

Функция IIf

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

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

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

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

Пример 3


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

Содержание рубрики VBA Excel по тематическим разделам со ссылками на все статьи.

6 комментариев для “VBA Excel. Оператор If…Then…Else и функция IIf”

  1. Евгений (автор статьи)

    Спасибо, Александр!
    Я изменил некоторые формулировки в статье, допускающие неоднозначное толкование. Кроме того, я решил проверить, что будет, если поместить при ElseIf выражение после Then, и вот что получилось:

    Код работает! Но он не будет работать, если строки

    заменить на строку

    или на строку

  2. Конструкция:
    if (condition)
    then (action 1)
    else (action 2)
    Допустим, condition = true. Следовательно, выполняется action 1. Но затем операции, совершенные в action 1, приводят к тому, что условие уже не соблюдается, т.е. после завершения action 1 condition = false. Означает ли это, что сработает также конструкция else и будут выполняться операции action 2? Или условие всей конструкции if-then-else проверяется в один момент времени и не подвержено влиянию операций внутри конструкции?

    1. Евгений (автор статьи)

      Привет, Михаил!
      Условие в вашей конструкции проверяется один раз:

      И даже если в конструкции используется блок ElseIf ... Then, для проверки условия используется первоначальное значение:

      В обоих случаях MsgBox выведет число 5.

    1. Евгений (автор статьи)

      Привет, Виктор!
      Однострочная запись короче и работает только с одним условием.

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

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