Оператор If…Then…Else — Visual Basic
- Статья
Выполняет ту или иную группу операторов в зависимости от значения выражения.
Синтаксис
' Multiline syntax: If condition [ Then ] [ statements ] [ ElseIf elseifcondition [ Then ] [ elseifstatements ] ] [ Else [ elsestatements ] ] End If ' Single-line syntax: If condition Then [ statements ] [ Else [ elsestatements ] ]
В этой статье содержится несколько примеров, иллюстрирующих использование If
…Then
…Else
Заявление:
- Пример многострочный синтаксис
- Пример вложенного синтаксиса
- Пример однострочного синтаксиса
Компоненты
condition
Обязательный. Выражение. Должен иметь значение True
или False
тип данных, который неявно преобразуется в Boolean
.
Если выражение является переменной, допускающейBoolean
значение NULL, результатом является Nothing, условие обрабатывается как если бы выражение было False
, а ElseIf
блоки вычисляются, если они существуют, или Else
блок выполняется, если он существует.
Then
Обязательный в однострочный синтаксис; необязательный параметр в многострочный синтаксис.
statements
Необязательный элемент. Одна или несколько инструкций, следующих за If
…Then
которые выполняются при condition
вычислении True
.
elseifcondition
Требуется, если ElseIf
он присутствует. Выражение. Должен иметь значение True
или False
тип данных, который неявно преобразуется в Boolean
.
elseifstatements
Необязательный элемент. Одна или несколько инструкций, следующих за ElseIf
…Then
которые выполняются при elseifcondition
вычислении True
.
elsestatements
Необязательный элемент. Одна или несколько инструкций, выполняемых, если ни одно предыдущее condition
выражение elseifcondition
не имеет значения True
.
End If
Завершает многострочный номер версии If
…Then
…Else
Блок.
Многострочный синтаксис
When an If
…Then
…Else
statement is encountered, condition
is tested. В противном случае condition
True
выполняются следующие Then
инструкции. False
В противном случае condition
каждая ElseIf
инструкция (при наличии) вычисляется в порядке. True
elseifcondition
При обнаружении инструкций, сразу после связанных ElseIf
операторов выполняются. Если операторы отсутствуют elseifcondition
True
ElseIf
или отсутствуют, выполняются следующие Else
инструкции. После выполнения приведенных ниже Then
ElseIf
инструкций или Else
выполнения выполнение продолжается с помощью следующей End If
инструкции.
Else
Оба ElseIf
предложения являются необязательными. You can have as many ElseIf
clauses as you want in an If
…Then
…Else
statement, but no ElseIf
clause can appear after an Else
clause. If
…Then
…Else
операторы могут быть вложены друг в друга.
В многострочный синтаксис оператор If
должен быть единственным оператором в первой строке. Else
Операторы ElseIf
и End If
операторы могут предшествовать только метке строки. Then
…If
. ..Else
Блок должен заканчиваться операторомEnd If
.
Совет
Выбор… Оператор Case может оказаться более полезным при вычислении одного выражения с несколькими возможными значениями.
синтаксис Single-Line
Вы можете использовать однострочный синтаксис для одного условия с кодом, чтобы выполнить его, если это так. Однако синтаксис с несколькими строками обеспечивает большую структуру и гибкость и упрощает чтение, обслуживание и отладку.
Что следует Then
за ключевым словом, чтобы определить, является ли оператор одной строкой If
. Если что-либо, отличное от комментария, появляется в Then
той же строке, оператор обрабатывается как однострочный If
оператор. Если Then
он отсутствует, он должен быть началом нескольких строк If
…Then
…Else
.
В синтаксисе с одной строкой можно выполнить несколько инструкций в результате If
принятия решения . ..Then
. Все операторы должны находиться в одной строке и разделяться двоеточиями.
Пример многострочный синтаксис
В следующем примере показано использование многострочный синтаксис If
…Then
…Else
Заявление.
Module Multiline Public Sub Main() 'Create a Random object to seed our starting value Dim randomizer As New Random() 'set our variable Dim count As Integer = randomizer.Next(0, 5) Dim message As String 'If count is zero, output will be no items If count = 0 Then message = "There are no items." 'If count is 1, output will be "There is 1 item.". ElseIf count = 1 Then message = "There is 1 item." 'If count is greater than 1, output will be "There are {count} items.", where {count} is replaced by the value of count. Else message = $"There are {count} items." End If Console.WriteLine(message) End Sub End Module 'This example displays output like the following: ' There are 4 items.
Пример вложенного синтаксиса
В следующем примере содержатся вложенные If
…Then
…Else
Заявления.
Module Nested Public Sub Main() ' Run the function as part of the WriteLine output. Console.WriteLine("Time Check is " & CheckIfTime() & ".") End Sub Private Function CheckIfTime() As Boolean ' Determine the current day of week and hour of day. Dim dayW As DayOfWeek = DateTime.Now.DayOfWeek Dim hour As Integer = DateTime.Now.Hour ' Return True if Wednesday from 2 to 3:59 P.M., ' or if Thursday from noon to 12:59 P.M. If dayW = DayOfWeek.Wednesday Then If hour = 14 Or hour = 15 Then Return True Else Return False End If ElseIf dayW = DayOfWeek.Thursday Then If hour = 12 Then Return True Else Return False End If Else Return False End If End Function End Module 'This example displays output like the following: 'Time Check is False.
В следующем примере показано использование однострочного синтаксиса.
Module SingleLine Public Sub Main() 'Create a Random object to seed our starting values Dim randomizer As New Random() Dim A As Integer = randomizer.Next(10, 20) Dim B As Integer = randomizer.Next(0, 20) Dim C As Integer = randomizer.Next(0, 5) 'Let's display the initial values for comparison Console.WriteLine($"A value before If: {A}") Console.WriteLine($"B value before If: {B}") Console.WriteLine($"C value before If: {C}") ' If A > 10, execute the three colon-separated statements in the order ' that they appear If A > 10 Then A = A + 1 : B = B + A : C = C + B 'If the condition is true, the values will be different Console.WriteLine($"A value after If: {A}") Console.WriteLine($"B value after If: {B}") Console.WriteLine($"C value after If: {C}") End Sub End Module 'This example displays output like the following: 'A value before If: 11 'B value before If: 6 'C value before If: 3 'A value after If: 12 'B value after If: 18 'C value after If: 21
См. также раздел
- Choose
- Switch
- Директивы #If…Then…#Else
- Оператор Select…Case
- Вложенные структуры управления
- Структуры решений
- Логические и побитовые операторы в Visual Basic
- Оператор If
VBA If, ElseIf, Else (Полное руководство по операторам If)
В этой статье
- Оператор VBA If
- If Then
- ElseIF — множественные условия
- El se
- Если-иначе
- Вложенные ЕСЛИ
- IF – Or, And, Xor, Not
- If Or
- If And
- If Xor
- If Not
- If Сравнения
- If – Логическая функция
- Сравнение текста
- VBA If Like
- If Loops
- If Else Примеры
- Проверить, пуста ли ячейка
- Проверить, содержит ли ячейка определенный текст
- Проверить, содержит ли ячейка текст
- Если перейти к 9000 5 Удалить строку, если ячейка пуста
- Если MessageBox Да / No
Оператор VBA If
If Then
Операторы VBA If позволяют проверить, являются ли выражения ИСТИННЫМИ или ЛОЖНЫМИ, работая по-разному код по результатам .
Рассмотрим простой пример:
If Range("a2").Value > 0 Then Range("b2").Value = "Positive"
Проверяет, больше ли значение в Range A2 0. Если это так, установите Range B2 равным «Положительный»
Примечание. При проверке условий мы будем использовать операторы сравнения =, >, <, <>, <=, >=. Подробнее о них мы поговорим далее в статье.
Вот синтаксис простого однострочного оператора If:
If [test_expression], then [action]
Чтобы упростить чтение, вы можете использовать символ продолжения строки (подчеркивание), чтобы расширить операторы If до двух строк (как мы сделали на рисунке выше):
If [test_expression], then _ [действие]
Если Диапазон ("a2"). Значение > 0 Тогда _ Range("b2").Value = "Positive"
End If
Приведенный выше однострочный оператор if хорошо работает, когда вы тестируете одно условие. Но по мере того, как ваши операторы IF становятся более сложными с несколькими условиями, вам нужно будет добавить «End If» в конец оператора if:
Если Диапазон("a2"). Значение > 0 Тогда Диапазон ("b2"). Значение = "Положительное" End If
Здесь используется следующий синтаксис:
If [test_expression] then [действие] End If
End If означает конец оператора if.
Теперь добавим ElseIF:
ElseIF – Множественные условия
ElseIf добавляется к существующему оператору If. ElseIf проверяет, выполняется ли условие ТОЛЬКО, если предыдущие условия не были выполнены .
В предыдущем примере мы проверяли, является ли значение ячейки положительным. Теперь мы также проверим, является ли значение ячейки отрицательным, с помощью ElseIf:
If Range("a2").Value > 0 Then Диапазон ("b2"). Значение = "Положительное" ElseIf Range("a2").Value < 0 Тогда Диапазон ("b2"). Значение = "Отрицательное" End If
Вы можете использовать несколько ElseIf для проверки нескольких условий:
Sub If_Multiple_Conditions() Если Диапазон("a2").Value = "Кот" Тогда Диапазон ("b2"). Значение = "Мяу" ElseIf Range("a2").Value = "Собака" Тогда Диапазон ("b2"). Значение = "Гав" ElseIf Range("a2").Value = "Утка" Тогда Диапазон ("b2"). Значение = "Крякать" Конец, если Конец суб 9.Мы закончим наш пример, используя Else, чтобы указать, что если значение ячейки не положительное или отрицательное, то оно должно быть равно нулю:
If Range("a2").Value > 0 Then Диапазон ("b2"). Значение = "Положительное" ElseIf Range("a2").Value < 0 Тогда Диапазон ("b2"). Значение = "Отрицательное" Еще Диапазон ("b2"). Значение = "Ноль" Конец, еслиIf-Else
Самый распространенный тип оператора If — простой If-Else:
Sub If_Else() Если Диапазон("a2").Значение > 0 Тогда Диапазон ("b2"). Значение = "Положительное" Еще Диапазон ("b2"). Значение = "Не положительное" Конец, если End SubВложенные операторы IF
Вы также можете «вкладывать» операторы if друг в друга.
Sub Nested_Ifs() Если Диапазон("a2").Значение > 0 Тогда Диапазон ("b2"). Значение = "Положительное" Еще Если Диапазон ("a2"). Значение < 0 Тогда Диапазон ("b2"). Значение = "Отрицательное" Еще Диапазон ("b2"). Значение = "Ноль" Конец, если Конец, если Конец субКодирование VBA стало проще
Остановить поиск кода VBA в сети. Узнайте больше об AutoMacro — конструкторе кода VBA, который позволяет новичкам создавать процедуры с нуля с минимальными знаниями в области программирования и множеством функций, позволяющих сэкономить время для всех пользователей!
Узнать больше
ЕСЛИ – Или, И, Исключающее, Не
Далее мы обсудим логические операторы: Или, И, Исключающее, Не.
Если или
Оператор или проверяет, если хотя бы одно условие выполнено
. Следующий код проверяет, меньше ли значение в диапазоне A2 5 000 или больше 10 000:
If Range("a2"). Value < 5000 Or Range("a2").Value > 10000 Then Диапазон ("b2"). Значение = "Вне диапазона" End IfВ одну строку можно включить несколько ИЛИ:
If Range("a2").Value < 5000 Or Range("a2").Value > 10000 Or Range("a2").Value = 9999 Затем Диапазон ("b2"). Значение = "Вне диапазона" Конец, еслиЕсли вы собираетесь использовать несколько Or, рекомендуется использовать символ продолжения строки, чтобы код было легче читать:
If Range("a2").Value < 5000 Or _ Диапазон ("a2"). Значение > 10000 или _ Диапазон ("a2"). Значение = 9999 Тогда Диапазон ("b2"). Значение = "Вне диапазона" End IfIf And
Оператор And позволяет проверить выполнение ВСЕХ условий .
Если Диапазон ("a2"). Значение >= 5000 И Диапазон ("a2"). Значение <= 10000 Тогда Диапазон ("b2"). Значение = "В диапазоне" Конец, еслиПрограммирование VBA | Генератор кода работает на вас!
If Xor
Оператор Xor позволяет проверить, выполняется ли ровно одно условие . Если соблюдаются нулевые условия, Xor вернет FALSE, если будут выполнены два или более условий, Xor также вернет false.
Я редко видел, чтобы Xor использовался в программировании на VBA.
If Not
Оператор Not используется для преобразования FALSE в TRUE или TRUE в FALSE:
Sub IF_Not() MsgBox Нет (Истина) Конец субОбратите внимание, что оператор Not требует, чтобы выражение было заключено в круглые скобки для переключения.
Оператор Not также можно применять к операторам If:
If Not (Range("a2").Value >= 5000 And Range("a2").Value <= 10000) Then Диапазон ("b2"). Значение = "Вне диапазона" End IfIf Сравнения
При выполнении сравнений обычно используется один из операторов сравнения:
Оператор сравнения | Пояснение |
---|---|
= | равно |
<> | Не равно |
> | Больше |
>= | Больше или равно |
< | Менее |
<= | Меньше или равно |
Однако вы также можете использовать любое выражение или функцию , что приводит к TRUE или FALSE
If – логическая функция
При построении выражений для операторов If вы также можете использовать любую функцию, которая генерирует TRUE или False. VBA имеет несколько из этих функций:
Функция | Описание |
---|---|
ИсДате | Возвращает TRUE, если выражение является допустимой датой |
Пусто | Проверка на наличие пустых ячеек или неопределенных переменных |
Изошибка | Проверить значения ошибок |
Иснул | Проверить значение NULL |
Иснумерик | Проверить числовое значение |
Их можно вызывать так:
If IsEmpty(Range("A1").Value) Then MsgBox "Ячейка пуста"
Excel также имеет много дополнительных функций, которые можно вызывать с помощью WorksheetFunction. Вот пример функции Excel IsText:
If Application.WorksheetFunction.IsText(Range("a2").Value) Then _ MsgBox «Ячейка является текстом»
Вы также можете создавать собственные пользовательские функции (UDF). Ниже мы создадим простую логическую функцию, которая возвращает TRUE. Затем мы вызовем эту функцию в нашем операторе If:
Sub If_Function() Если ВерноФункция Тогда MsgBox "Верно" Конец, если Конец сабвуфера Функция TrueFunction() как логическое значение ИстинаФункция = Истина Конечная функция
Сравнение текста
Вы также можете сравнивать текст аналогично сравнению чисел:
Msgbox "a" = "b"
Msgbox "a" = "a"
При сравнении текста необходимо учитывать «Регистр» (верхний или нижний). По умолчанию VBA считает буквы с разными регистрами несовпадающими. Другими словами, «А» <> «а».
Если вы хотите, чтобы VBA игнорировал регистр, вы должны добавить объявление Option Compare Text в начало вашего модуля:
Option Compare Text
После объявления «A» = «a»:
Option Compare Текст Подпрограмма If_Text() MsgBox "а" = "А" Конец суб
Автомакрос | Окончательная надстройка VBA | Нажмите для бесплатной пробной версии!
VBA If Like
Оператор VBA Like позволяет выполнять неточное сравнение текста. Щелкните ссылку «Like Operator», чтобы узнать больше, но ниже мы покажем базовый пример:
Dim strName as String strName = "Мистер Чарльз" Если strName Нравится "Mr*" Тогда MsgBox "Верно" Еще MsgBox "Ложь" End If
Здесь мы используем подстановочный знак звездочки «*». * обозначает любое количество любых символов. Таким образом, приведенный выше оператор If вернет TRUE. Оператор Like — чрезвычайно мощный, но часто недостаточно используемый инструмент для работы с текстом.
Циклы If
Циклы VBA позволяют повторять действия. Сочетание IF-ELSE с циклами — отличный способ быстро обработать множество вычислений.
Продолжая наш положительный/отрицательный пример, мы добавим цикл For Each Loop для перебора диапазона ячеек:
Sub If_Loop() Затемнить ячейку как диапазон Для каждой ячейки в диапазоне («A2: A6») Если Ячейка.Значение > 0 Тогда Cell.Offset(0, 1).Value = "Положительное" ИначеЕсли Cell.Value < 0 Тогда Cell. Offset(0, 1).Value = "Отрицательное" Еще Ячейка.Смещение(0, 1).Значение = "Ноль" Конец, если Следующая ячейка Конец суб
If Else Примеры
Теперь мы рассмотрим несколько более конкретных примеров.
Проверить, пуста ли ячейка
Этот код проверяет, пуста ли ячейка. Если он пуст, он будет игнорировать ячейку. Если он не пуст, он выведет значение ячейки в ячейку справа:
Sub If_Cell_Empty() Если Диапазон("a2").Значение <> "" Тогда Диапазон ("b2"). Значение = Диапазон ("a2"). Значение Конец, если End Sub
Автомакрос | Окончательная надстройка VBA | Нажмите для бесплатной пробной версии!
Проверить, содержит ли ячейка определенный текст
Функция Instr проверяет, найдена ли текстовая строка в другой строке. Используйте его с оператором If, чтобы проверить, содержит ли ячейка определенный текст:
If Instr(Range("A2").value,"text") > 0 Then Сообщение "Текст найден" End If
Проверить, содержит ли ячейка текст
Этот код проверит, является ли ячейка текстом:
Sub If_Cell_Is_Text() Если Application. WorksheetFunction.IsText(Range("a2").Value) Then MsgBox "Ячейка является текстом" Конец, если Конец суб
If Goto
Вы можете использовать результат оператора If для перехода к другому разделу кода.
Sub IfGoTo () Если Ошибка(Ячейка.значение) Тогда Перейти Пропустить Конец, если 'Некоторый код Пропускать: End Sub
Удалить строку, если ячейка пуста
Используя операторы if и циклы, вы можете проверить, пуста ли ячейка, и если да, то удалить всю строку.
Sub DeleteRowIfCellBlank() Затемнить ячейку как диапазон Для каждой ячейки в диапазоне («A2: A10») Если Cell.Value = "" Тогда Cell.EntireRow.Delete Следующая ячейка Конец суб
Автомакрос | Окончательная надстройка VBA | Нажмите для бесплатной пробной версии!
Если MessageBox Да / Нет
С помощью окон сообщений VBA вы можете попросить пользователя выбрать один из нескольких вариантов. Окно сообщения "Да/Нет" предлагает пользователю выбрать "Да" или "Нет". Вы можете добавить окно сообщения "Да/Нет" в процедуру, чтобы спросить пользователя, хочет ли он продолжить выполнение процедуры или нет. Вы обрабатываете ввод пользователя с помощью оператора If.
Вот окно сообщения Да/Нет на практике:
Подпрограмма MsgBoxVariable() Тусклый ответ как целое число answer = MsgBox("Вы хотите продолжить?", vbQuestion + vbYesNo) Если ответ = vbДа Тогда MsgBox "Да" Еще MsgBox "Нет" Конец, если End Sub
VBA If, ElseIf, Else в Access VBA
Функции If, ElseIf и Else работают точно так же в Access VBA, как и в Excel VBA.
Вы можете использовать оператор If для проверки наличия записей в наборе записей.
R if else elseif Оператор
Часто вам нужно выполнить некоторые операторы только при выполнении некоторого условия. Для этого вы можете использовать следующие условные операторы в своем коде.
-
if
Оператор: используйте его для выполнения блока кода, если указанное условие истинно -
иначе
Оператор: используйте его для выполнения блока кода, если то же условие ложно -
иначе, если Оператор
: используйте его, чтобы указать новое условие для проверки, если первое условие ложно -
ifelse()
Функция: используйте, когда проверяется условие для каждого элемента вектора
Используйте оператор if
для выполнения блока кода, если условие истинно.
Синтаксис
Выполнение простого сравнения
x <- 7 у <- 5 если (х > у) { print("х больше") } [1] "х больше"
Аналогично, вы можете использовать следующие операторы сравнения для сравнения двух значений:
== | Равно | , если (x == y) |
!= | Не равно | , если (x != y) ) |
> | Больше | если ( x > y) |
>= | Больше или равно | если (x >= y) |
< | Меньше | если (х < у) |
<= | Меньше или равно | , если (x <= y) |
Другие примеры
В R любое ненулевое значение считается ИСТИНА, тогда как ноль считается ЛОЖЬЮ. Вот почему все приведенные ниже операторы if верны.
# математическое выражение х <- 7 у <- 5 если (х + у) { распечатать("Истина") } [1] «Правда» # любое ненулевое значение если (-3) { распечатать("Истина") } [1] «Правда»
Если вам нужно выполнить только один оператор, вы можете пропустить фигурные скобки.
х <- 7 у <- 5 if(x > y) print("x больше") [1] "х больше"
Вы можете написать один оператор if
внутри другого оператора if
, чтобы проверить более одного условия и получить разные результаты.
х <- 7 у <- 5 г <- 2 если (х > у) { print("х больше у") if(x > z) print("x больше, чем y и z") } [1] «х больше у» [1] «x больше, чем y и z»
Используйте оператор else
для выполнения блока кода, если условие ложно.
Синтаксис
условие: любое выражение, которое дает либо истинное, либо ложное значение.
оператор if: определяет блок операторов, если условие истинно.
оператор else: определяет блок операторов, если условие ложно.
Простое сравнение if-else
x <- 7 у <- 5 если (х > у) { print("х больше") } еще { print("у больше") } [1] "х больше"
Используйте оператор else if
, чтобы указать новое условие для проверки, если первое условие ложно.
Синтаксис
условие: любое выражение, которое дает либо истинное, либо ложное значение.
оператор if: определяет блок операторов, если условие истинно.
Оператор elif: указывает новое условие для проверки, если первое условие ложно.
оператор else: определяет блок операторов, если условие ложно.
Использование оператора else-if
x <- 5 у <- 5 если (х > у) { print("х больше") } иначе если(х < у) { print("у больше") } еще { print("х и у равны") } [1] «х и у равны»
В R можно использовать до else if
утверждений, как вы хотите в своей программе. Нет предела. Однако это не лучшая практика, когда вы хотите принять ряд решений. Вы можете использовать функцию switch() как эффективный способ.
Множественные условия
Чтобы объединить два или более условий в один оператор if
, используйте логические операторы, а именно. &&
(и), ||
(или) и !
(нет).
&&
(и) выражение истинно, если все условия истинны.
х <- 7 у <- 5 г <- 2 если (х > у && х > г) { print("х больше") } [1] "х больше"
||
(или) выражение истинно, если хотя бы одно из условий истинно.
х <- 7 у <- 5 г <- 9 если (х > у || х > г) { print("x больше, чем y или z") } [1] «x больше, чем y или z»
!
(не) выражение истинно, если условие ложно.
х <- 7 у <- 5 если (! (х < у)) { print("х больше") } [1] "х больше"
Одна строка If…Else
Если вам нужно выполнить только одну инструкцию, одну для if и одну для else, вы можете поместить их все в одну строку:
Синтаксис
Примеры
x <- 7 у <- 5 if (x > y) print("x больше") else print("y больше") [1] "х больше"
Вы также можете использовать его для выбора назначения переменной.