Макрос if then else

Однострочная и многострочная конструкции оператора 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. Оператор If…Then…Else и функция IIf : 4 комментария

при ElseIf после Then выражение должно быть обязательно с новой строки

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

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

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

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

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

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

Можно использовать оператор If. Then. Else для выполнения определенного оператора или блока операторов в зависимости от значения условия. You can use the If. Then. Else statement to run a specific statement or a block of statements, depending on the value of a condition. Операторы If. Then. Else могут быть вложены в любое необходимое число слоев. If. Then. Else statements can be nested to as many levels as you need.

Однако для удобства читаемости лучше использовать оператор Select Case вместо нескольких уровней вложенных операторов If. Then. Else. However, for readability, you may want to use a Select Case statement rather than multiple levels of nested If. Then. Else statements.

Выполнение операторов, если условие равно True Running statements if a condition is True

Чтобы выполнить только один оператор, когда условие равно True, используйте однострочный синтаксис оператора If. Then. Else. To run only one statement when a condition is True, use the single-line syntax of the If. Then. Else statement. В примере ниже показан однострочный синтаксис, пропускающий ключевое слово Else. The following example shows the single-line syntax, omitting the Else keyword.

Читайте также:  В биосе клавиатура работает в windows нет

Чтобы выполнить несколько строк кода, необходимо использовать многострочный синтаксис. To run more than one line of code, you must use the multiple-line syntax. Этот синтаксис включает оператор End If, как показано в примере ниже. This syntax includes the End If statement, as shown in the following example.

Выполнение определенных операторов, если условие равно True, и выполнение других операторов, если оно равно False Running certain statements if a condition is True and running others if it’s False

Используйте оператор If. Then. Else для определения двух блоков исполняемых операторов: один блок выполняется, если условие равно True, а другой блок выполняется, если условие равно False. Use an If. Then. Else statement to define two blocks of executable statements: one block runs if the condition is True, and the other block runs if the condition is False.

Проверка второго условия, если первое условие равно False Testing a second condition if the first condition is False

Можно добавить операторы ElseIf в оператор If. Then. Else для проверки второго условия, если первое условие равно False. You can add ElseIf statements to an If. Then. Else statement to test a second condition if the first condition is False. Например, в следующей процедуре функция вычисляет бонус на основе классификации задания. For example, the following function procedure computes a bonus based on job classification. Оператор, следующий за оператором Else, выполняется в том случае, если условия во всех операторах If и ElseIf равны False. The statement following the Else statement runs if the conditions in all of the If and ElseIf statements are False.

См. также See also

Поддержка и обратная связь Support and feedback

Есть вопросы или отзывы, касающиеся Office VBA или этой статьи? Have questions or feedback about Office VBA or this documentation? Руководство по другим способам получения поддержки и отправки отзывов см. в статье Поддержка Office VBA и обратная связь. Please see Office VBA support and feedback for guidance about the ways you can receive support and provide feedback.

До сих пор рассматривались процедуры и функции, которые VBA выполняет в линейном порядке – VBA начинает выполнение кода с первого оператора после строки объявления процедуры (функции) и продолжает выполнять каждый оператор построчно до тех пор, пока не будет достигнут оператор End Sub (End Function). Такой линейный алгоритм можно представить нижеследующей блок-схемой:

Однако довольно часто встречаются ситуации, когда необходимо, чтобы процедуры или функции выполняли различные действия при разных условиях. Такую ситуацию иллюстрируют следующие блок-схемы:

Операторы, выполняющие роль ветвления программы на основании какого-либо условия, называются операторами условного перехода.

Простейшими операторами условного перехода являются операторы If..Then; If..Then..Else. Первый оператор позволяет выбирать единственную ветвь процедуры (левая блок-схема), тогда как второй дает возможность выбирать из двух альтернативных ветвей кода процедуры (правая блок-схема) на основе оценки того, является ли условие равным True или False.

Читайте также:  Ubuntu загрузочная флешка из iso

Синтаксис If..Then

Вариант 1:
If Condition Then Statements

Вариант 2:
If Condition Then
Statements
End If

Condition – логическое выражение;

Statements – один, несколько или ни одного оператора VBA.

Первый вариант требует написания оператора в одну строку, при этом в секции Statements можно указывать несколько операторов, разделяя их двоеточием.

Второй вариант позволяет указывать несколько операторов в разных строках.

Логика работы следующая: VBA сначала оценивает логическое выражение, представленное в секции Condition; если это логическое выражение равно True то выполняется оператор (операторы) секции Statements; затем VBA продолжает выполнение кода следующего за строкой If..Then (Вариант 1) или за ключевыми словами End If (Вариант 2). Если же логическое выражение равно False, то операторы секции Statements пропускаются и выполняется код, следующий за этой секцией.

Ниже приведен листинг элементарного использования первого варианта написания If..Then:


А теперь – второй вариант:

Обратите внимание, что операторы секции Statements написаны с использованием отступа (используется табуляция). Это важный момент. Следует сразу приучать себя к подобному оформлению программного кода – это повышает его удобочитаемость и значительно облегчает поиск ошибок.

Синтаксис If..Then..Else

Вариант 1:
If Condition Then Statements Else ElseStatements

Вариант 2:
If Condition Then
Statements
Else
ElseStatements
End If

Condition – логическое выражение;

Statements, ElseStatements – один, несколько или ни одного оператора VBA.

По аналогии с If..Then – первый вариант требует написания оператора в одну строку, при этом в секциях Statements и ElseStatements можно указывать несколько операторов, разделяя их двоеточием.

Второй вариант позволяет указывать несколько операторов в разных строках.

Логика работы следующая: VBA сначала оценивает логическое выражение, представленное в секции Condition; если это логическое выражение равно True то выполняется оператор (операторы) секции Statements; затем VBA продолжает выполнение кода следующего за строкой If..Then (Вариант 1) или за ключевыми словами End If (Вариант 2). Если же логическое выражение равно False, то выполняются операторы секции ElseStatements.

Следует сказать, что блок операторов If..Then..Else (Вариант 2) легче читать и понимать. Поэтому, советую использовать именно этот вариант, даже если в секциях Statements и ElseStatements будет находиться по одному оператору.

В начало страницы

В начало страницы

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

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Adblock detector