if else if миф
VBA-Урок 7.1. Условия (Conditions)
Условия являются очень полезными при программировании, поскольку позволяют нам выполнять действия, в зависимости от установленных критериев (используется такой же принцип как и в IF функции Excel).
Наиболее важной функцией, которая задает условие является IF и сейчас мы посмотрим, как она работает:
Давайте перейдем к практике и вернемся к примеру, который мы использовали в уроке с переменными. Цель этой процедуры была в том, чтобы открыть диалоговое окно, которое бы содержало значение из строки, указанного в ячейке F5 :
Мы воспользуемся функцией IsNumeric для проверки условия:
Нам также нужно прописать инструкции, если поставленное нами условие не выполнится:
Теперь нечисловое значения не повлечет никаких проблем.
Работая с нашим массивом, который содержит 16 строк данных, наш следующий шаг будет в проверке является ли переменная row_number: «больше чем или равно 2» и «меньше чем или равно 17».
Но сначала взглянем на операторы сравнения:
= | равно |
<> | не равно |
больше чем | |
>= | больше или равно |
и эти полезные операторы:
AND | [условие1] AND [условие2] Два условия должны быть выполнены |
OR | [условие1] OR [условие2] Не менее 1 из 2 условий должно быть выполнено |
NOT | NOT [условие1] Условие не должно выполниться |
Теперь давайте добавим одно из выше указанных условий AND между операторов сравнения:
Если мы хотим сделать наш макрос более практичным, мы можем заменить 17 на переменную, которая бы содержала количество строк. Это бы позволило нам добавлять и удалять строки из массива без необходимости изменять этот лимит каждый раз.
Для того, чтобы сделать это, мы должны создать переменную nb_rows и добавить эту функцию.
Мы хотим, чтобы эта функция подсчитала количество непустых ячеек в первой колонке по записала полученное значение в переменную nb_rows:
ElseIf
ElseIf дает возможность добавлять дополнительные условия после IF команды:
Далее есть пример с оценками от 1 до 6 в ячейке A1 и комментарием к этим оценкам в ячейке B1:
Select
Рассмотрим пример макроса с оператором Select:
Стоит отметить, что мы также могли использовать и другие операторы сравнения:
Оператор If. Then. Else
Выполняет один или группу операторов в зависимости от значения выражения.
Синтаксис
Если условие Затем [ заявления ] [ Else elsestatements ]
Также можно использовать синтаксис вложенных операторов:
Если условие Затем
[заявления]
[ ElseIf condition-n Then
[ elseifstatements ]]
[ Else
[ elsestatements ]]
End If
The If. Затем. Другой синтаксис заявления имеет эти части.
Part | Описание | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
условие | Обязательный. Одно или оба таких выражения: Числовое выражение или строковое выражение, оцененное как True либо False. Если условие Null, условие рассматривается как False. ПримечанияОднострочную форму (первый указанный синтаксис) можно использовать для простых коротких тестов. Однако форма блока (второй синтаксис) является более функциональной и простой для чтения, выполнения и отладки. При использовании однострочной формы возможно выполнение нескольких операторов при соответствующем условии If. Then. Все операторы должны находиться в одной строке и разделяться двоеточием: Оператор If блочной формы должен быть первым оператором в строке. У Else, ElseIf и End If может быть номер строки или метка строки, предшествующие им в строке. Блок If должен заканчиваться оператором End If. Чтобы определить, является ли утверждение блоком If, изучите, что следует ключевому слову Then. Если ничего, кроме комментария, не стоит после Then на той же строке, это однострочный оператор If. Части Else и ElseIf являются необязательными. Можно использовать сколько угодно частей ElseIf в блоке If, но они не должны стоять после Else. Блоки оператора If могут быть вложенными, то есть содержать внутри другие. При выполнении блока If (второй синтаксис) проверяется значение condition. Если condition является True, тогда выполняются операторы, стоящие после Then. Если condition равняется False, каждое условие ElseIf (если такое имеется) оценивается по порядку. При обнаружении условия со значением True выполняются операторы, следующие за относящейся к ним части Then. Если ни одно из значений, следующих за ElseIf, не равняется True (или если отсутствует ElseIf), выполняются операторы, следующие за Else. После выполнения операторов, следующих за Then либо Else, выполняются операторы после End If. Выбор Case может быть полезнее при оценке одного выражения, которое имеет несколько возможных действий. Тем не менее, предложение объектного типа TypeOf Is objecttype не может использоваться в заявлении Select Case. TypeOf невозможно использовать с такими типами данных, как Long, Integer ( кроме Object). ПримерВ этом примере показаны как блочная форма оператора If. Then. Else, так и его однострочное написание. В нем также показано использование оператора If TypeOf. Then. Else. Используйте конструкцию If TypeOf, чтобы определить, является ли управление, переданным в процедуру, текстовым полем. См. такжеПоддержка и обратная связьЕсть вопросы или отзывы, касающиеся Office VBA или этой статьи? Руководство по другим способам получения поддержки и отправки отзывов см. в статье Поддержка Office VBA и обратная связь. Использование операторов If. Then. ElseМожно использовать оператор If. Then. Else для выполнения определенного оператора или блока операторов в зависимости от значения условия. Операторы If. Then. Else могут быть вложены в любое необходимое число слоев. Однако для удобства читаемости лучше использовать оператор Select Case вместо нескольких уровней вложенных операторов If. Then. Else. Выполнение операторов, если условие равно TrueЧтобы выполнить только один оператор, когда условие равно True, используйте однострочный синтаксис оператора If. Then. Else. В примере ниже показан однострочный синтаксис, пропускающий ключевое слово Else. Чтобы выполнить несколько строк кода, необходимо использовать многострочный синтаксис. Этот синтаксис включает оператор End If, как показано в примере ниже. Выполнение определенных операторов, если условие равно True, и выполнение других операторов, если оно равно FalseИспользуйте оператор If. Then. Else для определения двух блоков исполняемых операторов: один блок выполняется, если условие равно True, а другой блок выполняется, если условие равно False. Проверка второго условия, если первое условие равно FalseМожно добавить операторы ElseIf в оператор If. Then. Else для проверки второго условия, если первое условие равно False. Например, в следующей процедуре функция вычисляет бонус на основе классификации задания. Оператор, следующий за оператором Else, выполняется в том случае, если условия во всех операторах If и ElseIf равны False. См. такжеПоддержка и обратная связьЕсть вопросы или отзывы, касающиеся Office VBA или этой статьи? Руководство по другим способам получения поддержки и отправки отзывов см. в статье Поддержка Office VBA и обратная связь. 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…Если компонент условие возвращает значение False, блок операторов конструкции If…Then… пропускается и управление программой передается следующей строке кода. Пример 1 Многострочная конструкцияСинтаксис многострочной конструкции If…Then…ElseКомпоненты многострочной конструкции If…Then…Else: Если компонент условие возвращает значение False, следующий за ним блок операторов конструкции If…Then…Else пропускается и управление программой передается следующей строке кода. Самый простой вариант многострочной конструкции If…Then…Else: Пример 2 Функция IIfФункция IIf проверяет заданное условие и возвращает значение в зависимости от результата проверки. If. Then. Else statementConditionally executes a group of statements, depending on the value of an expression. SyntaxIf condition Then [ statements ] [ Else elsestatements ] Or, you can use the block form syntax: If condition Then The If. Then. Else statement syntax has these parts.
RemarksYou can use the single-line form (first syntax) for short, simple tests. However, the block form (second syntax) provides more structure and flexibility than the single-line form and is usually easier to read, maintain, and debug. With the single-line form, it is possible to have multiple statements executed as the result of an If. Then decision. All statements must be on the same line and separated by colons, as in the following statement: A block form If statement must be the first statement on a line. The Else, ElseIf, and End If parts of the statement can have only a line number or line label preceding them. The block If must end with an End If statement. To determine whether or not a statement is a block If, examine what follows the Then keyword. If anything other than a comment appears after Then on the same line, the statement is treated as a single-line If statement. The Else and ElseIf clauses are both optional. You can have as many ElseIf clauses as you want in a block If, but none can appear after an Else clause. Block If statements can be nested; that is, contained within one another. When executing a block If (second syntax), condition is tested. If condition is True, the statements following Then are executed. If condition is False, each ElseIf condition (if any) is evaluated in turn. When a True condition is found, the statements immediately following the associated Then are executed. If none of the ElseIf conditions are True (or if there are no ElseIf clauses), the statements following Else are executed. After executing the statements following Then or Else, execution continues with the statement following End If. Select Case may be more useful when evaluating a single expression that has several possible actions. However, the TypeOf objectname Is objecttype clause can’t be used with the Select Case statement. TypeOf cannot be used with hard data types such as Long, Integer, and so forth other than Object. ExampleThis example shows both the block and single-line forms of the If. Then. Else statement. It also illustrates the use of If TypeOf. Then. Else. Use the If TypeOf construct to determine whether the Control passed into a procedure is a text box. See alsoSupport and feedbackHave questions or feedback about Office VBA or this documentation? Please see Office VBA support and feedback for guidance about the ways you can receive support and provide feedback.
|