Содержание

Оператор 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 ] ]

В этой статье содержится несколько примеров, иллюстрирующих использование IfThenElse Заявление:

  • Пример многострочный синтаксис
  • Пример вложенного синтаксиса
  • Пример однострочного синтаксиса

Компоненты

condition
Обязательный. Выражение. Должен иметь значение True или Falseтип данных, который неявно преобразуется в Boolean.

Если выражение является переменной, допускающейBoolean значение NULL, результатом является Nothing, условие обрабатывается как если бы выражение было False, а ElseIf блоки вычисляются, если они существуют, или Else блок выполняется, если он существует.

Then
Обязательный в однострочный синтаксис; необязательный параметр в многострочный синтаксис.

statements
Необязательный элемент. Одна или несколько инструкций, следующих за IfThen которые выполняются при condition вычислении True.

elseifcondition
Требуется, если ElseIf он присутствует. Выражение. Должен иметь значение True или Falseтип данных, который неявно преобразуется в Boolean.

elseifstatements
Необязательный элемент. Одна или несколько инструкций, следующих за ElseIfThen которые выполняются при elseifcondition вычислении True.

elsestatements
Необязательный элемент. Одна или несколько инструкций, выполняемых, если ни одно предыдущее condition выражение elseifcondition не имеет значения True.

End If
Завершает многострочный номер версии IfThenElse Блок.

Многострочный синтаксис

When an IfThenElse statement is encountered, condition is tested. В противном случае conditionTrueвыполняются следующие Then инструкции. FalseВ противном случае condition каждая ElseIf инструкция (при наличии) вычисляется в порядке. Trueelseifcondition При обнаружении инструкций, сразу после связанных ElseIf операторов выполняются. Если операторы отсутствуют elseifconditionTrueElseIf или отсутствуют, выполняются следующие Else инструкции. После выполнения приведенных ниже ThenElseIfинструкций или Elseвыполнения выполнение продолжается с помощью следующей End Ifинструкции.

Else Оба ElseIf предложения являются необязательными. You can have as many ElseIf clauses as you want in an IfThenElse statement, but no ElseIf clause can appear after an Else clause. IfThenElse операторы могут быть вложены друг в друга.

В многострочный синтаксис оператор If должен быть единственным оператором в первой строке. ElseОператоры ElseIfи End If операторы могут предшествовать только метке строки. ThenIf . ..Else Блок должен заканчиваться операторомEnd If.

Совет

Выбор… Оператор Case может оказаться более полезным при вычислении одного выражения с несколькими возможными значениями.

синтаксис Single-Line

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

Что следует Then за ключевым словом, чтобы определить, является ли оператор одной строкой If. Если что-либо, отличное от комментария, появляется в Then той же строке, оператор обрабатывается как однострочный If оператор. Если Then он отсутствует, он должен быть началом нескольких строк IfThenElse.

В синтаксисе с одной строкой можно выполнить несколько инструкций в результате Ifпринятия решения . ..Then . Все операторы должны находиться в одной строке и разделяться двоеточиями.

Пример многострочный синтаксис

В следующем примере показано использование многострочный синтаксис IfThenElse Заявление.

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.

Пример вложенного синтаксиса

В следующем примере содержатся вложенные IfThenElse Заявления.

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, ElseIf, Else в Access VBA

Оператор 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 If 

If 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 If 

If Сравнения

При выполнении сравнений обычно используется один из операторов сравнения:

Оператор сравнения Пояснение
= равно
<> Не равно
> Больше
>= Больше или равно
< Менее
<= Меньше или равно

Однако вы также можете использовать любое выражение или функцию , что приводит к 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] "х больше"
 

Аналогично, вы можете использовать следующие операторы сравнения для сравнения двух значений:

R Операторы сравнения с оператором if
== Равно, если (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] "х больше"
 

Вы также можете использовать его для выбора назначения переменной.