No Image

Условный оператор vba excel

СОДЕРЖАНИЕ
465 просмотров
10 марта 2020

Выполняет один или группу операторов в зависимости от значения выражения. Conditionally executes a group of statements, depending on the value of an expression.

Синтаксис Syntax

Если условие Затем нажмите [ Операторы ] [ Else elseifstatements ] If condition Then [ statements ] [ Else elsestatements ]

Также можно использовать синтаксис вложенных операторов: Or, you can use the block form syntax:

Если условие Затем нажмите If condition Then
[ Операторы ] [ statements ]
[ ElseIf Condition — n then [ ElseIf condition-n Then
[ elseifstatements ]] [ elseifstatements ]]
[ Else [ Else
[ elsestatements ]] [ elsestatements ]]
End If End If

If. Then. Else содержит следующие элементы. The If. Then. Else statement syntax has these parts.

Часть Part Описание Description
установлен condition Обязательное поле. Required. Одно или оба таких выражения: One or more of the following two types of expressions:

Числовое выражение или строковое выражение, оцененное как True либо False. A numeric expression or string expression that evaluates to True or False. Если Condition имеет значение null, условие считается ложным. If condition is Null, condition is treated as False.

Выражение вида typeof objectname является ObjectType. An expression of the form TypeOf objectname Is objecttype. Имя_объекта — это любая ссылка на объект, а ObjectType — любой допустимый тип объекта. The objectname is any object reference, and objecttype is any valid object type. Выражение имеет значение true , если objectname имеет тип объекта, заданный параметром ObjectType; в противном случае — false. The expression is True if objectname is of the object type specified by objecttype; otherwise, it is False.

Операторы statements Необязательный элемент в форме блока; является обязательным при использовании однострочного оператора без предложения Else. Optional in block form; required in single-line form that has no Else clause. Операторы разделяются двоеточием; выполняется, если значение condition имеет значение True. One or more statements separated by colons; executed if condition is True. условие — n condition-n Необязательно. Optional. То же, что и условие. Same as condition. elseifstatements elseifstatements Необязательно. Optional. Один или несколько операторов, выполняемых, если связанное условие — n имеет значение true. One or more statements executed if associated condition-n is True. elsestatements elsestatements Необязательный параметр. Optional. Один или несколько операторов выполняются, если отсутствует предыдущее условие или условное выражение n , равное true. One or more statements executed if no previous condition or condition-n expression is True.

Примечания Remarks

Однострочную форму (первый указанный синтаксис) можно использовать для простых коротких тестов. You 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.

При использовании однострочной формы возможно выполнение нескольких операторов при соответствующем условии If. Then. 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:

Оператор If блочной формы должен быть первым оператором в строке. A block form If statement must be the first statement on a line. У Else, ElseIf и End If может быть номер строки или метка строки, предшествующие им в строке. The Else, ElseIf, and End If parts of the statement can have only a line number or line label preceding them. Блок If должен заканчиваться оператором End If. The block If must end with an End If statement.

Чтобы определить, является ли оператор блоком, следует **** проверить, что следует за ключевым словом then . To determine whether or not a statement is a block If, examine what follows the Then keyword. Если ничего, кроме комментария, не стоит после Then на той же строке, это однострочный оператор If. If anything other than a comment appears after Then on the same line, the statement is treated as a single-line If statement.

Читайте также:  Whatsapp не приходит смс с кодом

Части Else и ElseIf являются необязательными. The Else and ElseIf clauses are both optional. Можно использовать сколько угодно частей ElseIf в блоке If, но они не должны стоять после Else. You can have as many ElseIf clauses as you want in a block If, but none can appear after an Else clause. Блоки оператора If могут быть вложенными, то есть содержать внутри другие. Block If statements can be nested; that is, contained within one another.

При выполнении блока If (второй синтаксис) проверяется значение condition. When executing a block If (second syntax), condition is tested. Если_condition_ является True, тогда выполняются операторы, стоящие после Then. If condition is True, the statements following Then are executed. Если condition равняется False, каждое условие ElseIf (если такое имеется) оценивается по порядку. If condition is False, each ElseIf condition (if any) is evaluated in turn. При обнаружении условия со значением True выполняются операторы, следующие за относящейся к ним части Then. When a True condition is found, the statements immediately following the associated Then are executed. Если ни одно из значений, следующих за ElseIf, не равняется True (или если отсутствует ElseIf), выполняются операторы, следующие за Else. If none of the ElseIf conditions are True (or if there are no ElseIf clauses), the statements following Else are executed. После выполнения операторов, следующих за Then либоElse, выполняются операторы после End If. After executing the statements following Then or Else, execution continues with the statement following End If.

Вариант SELECT может оказаться более эффективным при оценке одного выражения с несколькими возможными действиями. Select Case may be more useful when evaluating a single expression that has several possible actions. Однако оператор typeof objectname является предложением ObjectType нельзя использовать с оператором Select Case . However, the TypeOf objectname Is objecttype clause can’t be used with the Select Case statement.

TypeOf невозможно использовать с такими типами данных, как Long, Integer ( кроме Object). TypeOf cannot be used with hard data types such as Long, Integer, and so forth other than Object.

Пример Example

В этом примере показаны как блочная форма оператора If. Then. Else, так и его однострочное написание. This example shows both the block and single-line forms of the If. Then. Else statement. В нем также показано использование оператора If TypeOf. Then. Else. It also illustrates the use of If TypeOf. Then. Else.

Используйте конструкцию If typeof , чтобы определить, является ли элемент управления, переданный в процедуру, текстовым полем. Use the If TypeOf construct to determine whether the Control passed into a procedure is a text box.

См. также 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.

Однострочная и многострочная конструкции оператора 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. пропускается и управление программой передается следующей строке кода.

Читайте также:  Amd radeon 4650 драйвер

Пример 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 : 6 комментариев

при 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 , для проверки условия используется первоначальное значение:

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

чем отличается однострочная и многострочная форма синтаксиса

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

Например . Вывести сообщение о текущей дате.

Для этого можно использовать следующий оператор:

MsgBox "Сегодня на календаре" & Date , , "Внимание"

В результате будет выведено следующее окно (рис.3.1).

После щелчка по кнопке ОК окно сообщения закроется, и выполнение программы возобновится с оператора, стоящего непосредственно за вызовом MsgBox.

3.3.2. Функция InputBox

Функция InputBox осуществляет ввод значений переменных с помощью окна ввода и имеет следующий синтаксис:

Имя_Переменной = InputBox( Сообщение[, Заголовок])

Сообщение – обязательный аргумент. Задает в окне информационное сообщение, обычно поясняющее смысл вводимой величины

Заголовок – задает заголовок окна.

Например , Ввести значение переменной N с клавиатуры, предусмотрев значение по умолчанию равное 10.

Для этого можно использовать следующий оператор:

N = InputBox("Введите N", "Ввод исходных данных",10)

В результате будет выведено следующее окно для ввода значения переменной N (рис.3.2).

Если значение по умолчанию подходит пользователю, то после щелчка кнопки ОК окно ввода закроется, переменной N присвоится значение 10 и выполнение программы возобновится с оператора, стоящего непосредственно за вызовом InputBox.

Если же значение по умолчанию не подходит пользователю, то перед щелчком по кнопке ОК необходимо ввести нужное значение переменной N.

Читайте также:  Сколько стоит эппл музыка

3.4. Условный оператор IF

Для реализации разветвляющегося вычислительного процесса в VBA используется оператор If…Then…Else, который представляет собой простейшую форму проверки условий. Он имеет следующий синтаксис:

If УСЛОВИЕ Then ОПЕРАТОР_1 Else ОПЕРАТОР_2

ОПЕРАТОР_1 выполняется, если УСЛОВИЕ истинно, в противном случае выполняется ОПЕРАТОР_2. При этом оператор If…Then…Else записывается в одну строку.

УСЛОВИЕ – это выражение логического типа. Результат выражения всегда имеет булевский тип. Выражение может быть простым и сложным. При записи простых условий могут использоваться все возможные операции отношения, указанные в табл. 3.2.

Таблица 3.2. Логические отношения

Операция

Название

Выражение

Результат

True, если А равно В

True, если А не равно В

True, если А ,больше В

Больше или равно

True, если А больше или равно В

Пример 1 . Написать часть программы для алгоритма на рис. 3.3.

Пример 2. Написать часть программы для алгоритма на рис. 3.4.

3.5. Оператор выбора Select Case

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

Select Case ПРОВЕРЯЕМОЕ_ВЫРАЖЕНИЕ

Case ЗНАЧЕНИЯ_1

Case ЗНАЧЕНИЯ_N

[Case Else

End Select

ПРОВЕРЯЕМОЕ_ВЫРАЖЕНИЕ может иметь любой скалярный тип, кроме вещественного. ЗНАЧЕНИЯ состоят из произвольного количества значений или диапазонов, отделенных друг от друга запятыми.

Тип ЗНАЧЕНИЙ должен совпадать с типом ПРОВЕРЯЕМОГО_ВЫРАЖЕНИЯ.

Сначала вычисляется ПРОВЕРЯЕМОЕ_ВЫРАЖЕНИЕ. Если его значение совпадает с одним из значений ЗНАЧЕНИЯ_I, то выполнятся ОПЕРАТОРЫ_I и управление передается оператору, стоящему после End Select. Если его значение не совпадает ни с одним из значений ЗНАЧЕНИЯ_I, то выполнятся ИНАЧЕ_ОПЕРАТОРЫ и управление передается оператору, стоящему после End Select

Например. Написать часть программы для алгоритма на рис. 3.5, определяющего значение переменной S в зависимости от значения переменной n.

3.6. Операторы цикла

Для реализации циклического вычислительного процесса, т. е. многократного выполнения одного или нескольких операторов, служит оператор цикла For…Next, который имеет следующий синтаксис:

For СЧЕТЧИК=НАЧ_ЗНАЧЕНИЕ Тo КОН_ЗНАЧЕНИЕ Step ШАГ

[Exit For]

Next СЧЕТЧИК

Цикл For…Next перебирает значения переменной СЧЕТЧИК, которая является параметром цикла, от начального до конечного значения с указанным шагом изменения. При этом обеспечивается выполнение блока операторов тела цикла при каждом новом значении счетчика. Если Step ШАГ в конструкции отсутствует, то по умолчанию считается, что шаг равен 1. По оператору Exit For можно выйти из оператора цикла до того, как СЧЕТЧИК достигнет последнего значения.*

Для перебора объектов из группы подобных объектов, например, ячеек из диапазона или элементов массива, удобно использовать оператор цикла For… Each…Next.

For Each Элемент In Группа

[Exit For]

Next Элемент

В VBA для организации циклов с неизвестным заранее числом повторений используются и другие операторы цикла:

циклы с предусловием – Do While Loop,

Do Until Loop;

циклы с постусловием Do Loop While,

Do Loop Until.

Ниже приведен синтаксис этих операторов цикла:

‘ Цикл с предусловием Do While Loop

Do While УСЛОВИЕ

[Exit Do]

Loop

Примечание. Не рекомендуется принудительно изменять значения параметра цикла, его начального и конечного значения в теле цикла For…Next.

‘ Цикл с предусловием Do Until Loop

Do Until УСЛОВИЕ

[Exit Do]

Loop

‘ Цикл с постусловием Do Loop While

Do

[Exit Do]

Loop While УСЛОВИЕ

‘ Цикл с постусловием Do Loop Until

Do

[Exit For]

Loop Until УСЛОВИЕ

Оператор Do While…Loop обеспечивает многократное повторение блока операторов до тех пор, пока УСЛОВИЕ соблюдается, а оператор Do Until…Loop пока УСЛОВИЕ не соблюдается. Операторы Do…Loop While, Do…Loop Until отличаются от перечисленных выше операторов тем, что сначала блок операторов выполняется по крайней мере один раз, а потом проверяется УСЛОВИЕ.

Для избежания зацикливания в теле цикла должен быть хотя бы один оператор, который изменяет значения переменных, стоящих в УСЛОВИИ.

Оператор Exit Do обеспечивает досрочный выход из оператора цикла.

Комментировать
465 просмотров
Комментариев нет, будьте первым кто его оставит

Это интересно
Adblock
detector