Оператор If...Then...Else.

Этот урок будет посвящен такой теме, как - операторы. В частности мы познакомимся с оператором If...Then...Else, а так же познакомимся с арифметическими операторами и операторами сравнения, без которых оператор If...Then...Else нам с вами не применить максимально.

В Visual Basic есть довольно большое количество различных операторов, некоторые из них способны вскипятить мозг даже бывалому программисту. Чтобы "не закипеть", мы рассмотрим только самые основные операторы на которых работает 95% программ, остальные операторы мы изучим по мере необходимости, таким образом тебе не придется зазубривать целый учебник и можно будет сразу же перейти к практическим занятиям.

Выкладывая данный урок, я подразумеваю, что у тебя есть познания в области математики начальных классов.
Что за познания? Это те самые примеры, в которых мы вычитали, складывали, умножали,... Припоминаешь такое? Отлично! Значит есть ещё порох в пороховницах.

Перед тем, как приступить к изучению оператора If...Then...Else необходимо познакомиться с арифметическими и логическими операторами, без которых оператор If...Then...Else нам никак не применить с точки зрения глубокой практики. Ладно, хватит скучных наставлений и отступлений, присаживайся поудобней, мы переходим к делу!

Арифметические операторы
С помощью данных операторов можно; делить, умножать, складывать и т.д.
Тут всё так же просто, как в школе в начальных классах.

+ (сложение)
- (вычитание)
* (умножение)
/ (деление с остатком) в школе знаком деления был вот это знак : запомни эти отличия и не путай
\ (целочисленное деление, без остатка)

Операторы сравнения
Это довольно важные операторы. С помощью данных операторов можно сравнивать числа, строки и другие данные. Без операторов сравнения невозможно построить логику или ветвление в программе.
Важно запомнить, что операторы сравнения сравнивают два выражения и возвращают логическое значение Boolean в виде True(если условие верно) и False(если условие не верно).
True в переводе с английского означает - Правда
False в переводе с английского означает - Ложь
С ходу возможно это покажется непонятным, но не переживай, чуть ниже ты поймешь что вся эта чертовщина значит.

= (равно)
Значение первого выражения равно значению второго выражения, либо это может быть результат сложения/вычитания/... двух вычислений.

<> (неравенство)
Значение первого выражения не равно значению второго выражения

< (меньше)
Значение первого выражения меньше значения второго выражения

> (больше)
Значение первого выражения больше значения второго

<= (меньше или равно)
Значение первого выражения меньше или равно значению второго

>=
(больше или равно)
Значение первого выражения больше или равно значению второго

Вижу-вижу, что тебе уже стало страшновато, на самом деле ничего страшного нет!
Читай дальше и ты убедишься, что всё довольно просто.
Ниже мы хорошенько подкрепим всё на примерах и на практике.
И так, арифметические и логические операторы мы рассмотрели, теперь можно перейти непосредственно к самому оператору If...Then...Else

Оператор If...Then...Else
Сначала давай посмотрим, что означают слова оператора, если их перевести с английского на русский язык.
If переводится, как Если
Then переводится, как То
Else переводится, как Иначе

Для чего используется оператор If...Then...Else?
С помощью данного оператора можно делать ветвление программ, без этого оператора невозможно написать серьезную программу.
Перейдем к типичным примерам.

Как компьютер обрабатывает оператор If...?
Допустим, что у нас есть две переменных:

Dim var1 = 10 Dim var2 = 5

и допустим, что у нас есть условие:

If var1 > var2 Then MsgBox("Да, переменная var1 больше переменной var2") End If

Как условие показанное выше работает?
Компьютер посмотрит на переменные var1 и var2, если var1 действительно больше var2, значит условие верно(True - Правда) и компьютер покажет MsgBox.
Если условие будет не верно(False - Ложь), то компьютер не покажет MsgBox.
Убедиться в этом можно поменяв значения переменных на другие числа, чтобы условие получилось не верно, тогда мы не увидим MsgBox.

Внимание!

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


Примеры
Далее будут приведены примеры в указанной ниже последовательности.

Арифметические операторы
+ (сложение)
- (вычитание)
* (умножение)
/ (деление)

Спойлер: Арифметические примеры - НАЖМИ

+ Сложение:

"Пример показывает как можно сложить два числа Dim chislo1 As Integer = 5 Dim chislo2 As Integer = 5 Dim resultat As Integer resultat = chislo1 + chislo2 MsgBox(resultat)

- Вычитание:

"Пример показывает как можно получить разницу двух чисел(вычитание) Dim chislo1 As Integer = 5 Dim chislo2 As Integer = 5 Dim resultat As Integer resultat = chislo1 - chislo2 MsgBox(resultat)

* Умножение:

"Пример показывает как можно умножить одно число на другое Dim chislo1 As Integer = 5 Dim chislo2 As Integer = 5 Dim resultat As Integer resultat = chislo1 * chislo2 MsgBox(resultat)

/ Деление:

"Пример показывает как можно разделить одно число на другое Dim chislo1 As Integer = 5 Dim chislo2 As Integer = 5 Dim resultat As Integer resultat = chislo1 / chislo2 MsgBox(resultat)

Операторы сравнения
= (равно)
<> (неравенство)
< (меньше)
> (больше)
<= (меньше или равно)
>= (больше или равно)

Спойлер: Операторы сравнения - НАЖМИ

= Равно:

"Пример показывает как можно узнать равен ли текст в переменной другому тексту который мы указали Dim stroka As String = "Привет NubClub!" "Если stroka равна тексту в двойных кавычках значит покажи мне MsgBox If stroka = "Привет NubClub!" Then MsgBox("Переменная равна тексту, который мы ищем!") End If

<> Неравенство:

"Пример показывает как можно узнать равен ли текст в переменной другому тексту который мы указали Dim stroka As String = "Привет NubClub!" "Если stroka не равна тексту в двойных кавычках значит покажи мне MsgBox If stroka <> "Я начинающий программист" Then MsgBox("Текст в переменной stroka не равен тексту в кавычках!") End If

< Меньше:

"Пример показывает как можно сравнить два числа Dim chislo1 As Integer = 10 Dim chislo2 As Integer = 5 "Если chislo2 меньше chislo1 значит покажи мне MsgBox If chislo2 < chislo1 Then MsgBox("Значение переменной chislo2 меньше значения переменной chislo1") End If

> Больше:

"Пример показывает как можно сравнить два числа Dim chislo1 As Integer = 10 Dim chislo2 As Integer = 5 "Если chislo1 больше chislo2 значит покажи мне MsgBox If chislo1 > chislo2 Then MsgBox("Значение переменной chislo1 больше значения переменной chislo2") End If

<= Меньше или равно:

"Пример показывает как можно сравнить два числа Dim chislo1 As Integer = 10 Dim chislo2 As Integer = 5 "Если chislo2 меньше или равно chislo1 значит покажи мне MsgBox If chislo2 <= chislo1 Then MsgBox("Значение переменной chislo2 меньше или равно значению переменной chislo1") End If

>= Больше или равно:

"Пример показывает как можно сравнить два числа Dim chislo1 As Integer = 10 Dim chislo2 As Integer = 5 "Если chislo1 больше или равно chislo2 значит покажи мне MsgBox If chislo1 >= chislo2 Then MsgBox("Значение переменной chislo1 больше или равно значению переменной chislo2") End If

Оператор If...Then...Else - Ветвление
Выше были приведены довольно простые примеры использования условий If...Then, т.е. без ветвления и без применения Else.
Теперь давай рассмотрим примерчики с ветвлением, они немного посложнее, но без них никуда.
По своей сути с применением Else все примеры останутся такими же как и выше, добавится лишь небольшое ветвление программы.
Что добавится?
Если раньше у нас MsgBox появлялся только тогда, когда условие было верно, то с применение Else можно вызвать MsgBox даже тогда, когда условие не верно.

И так, пример.

"Пример показывает как можно узнать равен ли текст в переменной другому тексту который мы указали Dim stroka As String = "Привет NubClub!" "Если stroka равна тексту в двойных кавычках значит покажи мне MsgBox с текстом - Переменная равна тексту, который мы ищем! "Если stroka НЕ РАВНА тексту в двойных кавычках значит покажи мне MsgBox с текстом - Переменная не равна тексту, который мы ищем! If stroka = "Привет NubClub!" Then MsgBox("Переменная равна тексту, который мы ищем!") Else MsgBox("Переменная не равна тексту, который мы ищем!") End If

Бывают случаи, что у нас одна переменная и несколько значений с текстом, которые нужно проверить. Что тогда делать? Снимать штаны и бегать?!
Нет, это не наш метод
Есть более элегантное решение. Можно усложнить наше условие с помощью ElseIf и таким образом проверить сколько угодно строк, в разумных пределах конечно. Если строк очень много, то тут уже придут на помощь циклы, с которыми мы поработаем на следующих уроках.

Рассмотрим пример.
Давай представим, что нам нужно создать логику для уличного светофора, чтобы он работал и показывал цвета.
Как это сделать?
На самом деле это не сложно, пример.

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

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



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

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


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

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

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


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

Statements


Первый вариант требует написания оператора в одну строку, при этом в секции 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.

В Visual Basic for Application (VBA) существует несколько способов изменения порядка выполнения инструкций. Управляющие структуры VBA во многом схожи с подобными структурами в других языках программирования.

Основные управляющие структуры VBA:

  • If Then Else "End If
  • For Next
  • While Wend
  • Do Loop
  • Select Case "End Select
  • For Each Next

    Управляющая инструкция If Then Else "End If
    Эта инструкция изменяет порядок выполнения инструкций в зависимости от результатов проверки заданного условия (или набора условий)

    Пример:

    Sub TestIfThen()

    iData = "pashulka"

    If iData = "Excel" Then
    MsgBox "Этого сообщения Вы не увидите никогда!!!"
    ElseIf iData = "Office" Then
    MsgBox "К сожалению, этого сообщения Вы тоже не увидите!!!"
    Else
    MsgBox "Это сообщение появится в любом случае",iData
    End If

    Комментарии:
    If - ключевое слово, означающее начало проверки
    iData - переменная, значение которой будет проверяться
    Then - ключевое слово, означающее конец проверки
    MsgBox - сообщение
    ElseIf - ключевое слово, означающее начало новой проверки
    Then - ключевое слово, означающее конец дополнительной проверки
    MsgBox - сообщение
    Else - ключевое слово, означающее конец блока инструкций, выполняемых при положительном результате проверки, и начало блока инструкций, выполняемых при отрицательном результате.
    MsgBox - сообщение
    End If

    В инструкции If Then Else "End If ключевые слова ElseIf и Else являются необязательными.

    Управляющая инструкция For Next
    Эта инструкция позволяет выполнять определённые действия нужное количество раз. Такие инструкции, как правило, называют циклами.

    Пример:

    Sub TestForNext()

    For iCount = 1 To 100 Step 2
    i = i + 1
    Next

    Комментарии:
    For
    iCount - переменная, определяющая число повторений цикла.
    1 - начальное значение счётчика
    To - ключевое слово, разделяющее начальное и конечное значение счётчика
    100 - конечное значение счётчика
    Step - ключевое слово, определяющее шаг счётчика
    2 - шаг счётчика (число)
    Next - ключевое слово, при достижении которого значение счётчика изменяется на величину шага, после чего управление опять переходит в начало цикла.
    MsgBox

    В инструкции For Next ключевое слово Step является необязательным. При его отсутствии, шаг выполнения счётчика будет равен 1.

    важно Шаг счётчика обязательно должен быть числом. Если шаг счётчика указан в виде отрицательного числа, то тогда значение счётчика будет с каждым циклом будет уменьшаться.

    Пример, с обратным отсчётом:

    Sub TestForNext2()

    For iCount = 300 To 1 Step -3
    i = i + 1
    If iCount = 153 Then Exit For
    Next iCount

    MsgBox "Число повторений: " & i

    Обратите внимание на:
    If iCount = 153 Then - в этом VBA коде мы применили уже известную нам инструкцию If Then Else
    Exit For
    Next iCount - в коде присутствует переменная (счётчик), который располагается после ключевого слова. Подобный синтаксис используется, как правило, для визуального определения конца цикла, если в VBA коде присутствует достаточно много подобных инструкций.

    Управляющая инструкция While Wend
    Эта инструкция позволяет выполнять определённые действия до тех пор, пока соблюдается заданное условие.

    Пример:

    Sub TestWhileWend()

    While iCount iCount = iCount + 1
    Wend

    Комментарии:
    While - ключевое слово, означающее начало цикла
    iCount - условие, при соблюдении которого будет выполняться эта инструкция
    Wend
    MsgBox - сообщение о количестве повторений

    Управляющая инструкция Do Loop
    Эта инструкция позволяет выполнять определённые действия не только до тех пор, пока соблюдается заданное условие, но и наиборот, пока не будет выполнено заданное условие.

    Пример:

    Sub TestDoLoop()

    Do Until iCount >= 100
    iCount = iCount + 1
    Loop

    MsgBox "Число повторений: " & iCount

    Комментарии:
    Do - ключевое слово, означающее начало цикла
    Until - ключевое слово, означающее наличие условия
    iCount >= 100 - условие, при соблюдении которого будет выполняться эта инструкция
    Loop - ключевое слово, означающее конец цикла
    MsgBox - сообщение о количестве повторений

    Sub TestDoLoop2()

    Do
    iCount = iCount + 1
    If iCount = 50 Then Exit Do
    Loop Until iCount = 100

    MsgBox "Число повторений: " & iCount

    Обратите внимание на:
    If iCount = 50 Then - в этом VBA коде мы опять применили уже известную нам инструкцию If Then Else
    Exit Do - инструкция означающая досрочный выход из цикла
    iCount = 100 - условие, при соблюдении которого будет выполняться эта инструкция

    Примечание:
    Условие заданное в конце цикла гарантирует, что он будет выполнен хотя бы один раз. Будьте осторожны с инструкциями While Wend, Do Loop, так как при некорректном задании условия, Вы можете получить практически perpetuum mobile.

    Управляющая инструкция Select Case "End Select
    Эта инструкция в зависимости от результатов значения переменной или выражения выполняет один из нескольких фрагментов кода.

    Пример:

    Sub TestSelectCase()

    Select Case iNumeric
    Case 1

    Case 2, 5
    MsgBox "Это сообщение Вы не должны увидеть"
    Case 10 To 13
    MsgBox "Это сообщение Вы не должны увидеть"
    Case Is > 14
    MsgBox "Именно это сообщение Вы и должны увидеть"
    Case Else
    MsgBox "Это сообщение появится, если переменная будет End Select

    Комментарии:
    Select Case
    iNumeric - переменная или выражение, значение которой определяет выбор фрагмента VBA кода для выполнения
    Case 1 - первый вариант значения для сравнения.
    Если значение переменной совпадёт с ним, то будет выполнен фрагмент кода следующий за Case, но до следующего ключевого Case, затем инструкция завершит свою работу. В противном случае проверка продолжится.
    Case 2, 5 - второй вариант значения.
    Case 10 To 13 - третий вариант значения.
    Case Is > 14 - четвёртый вариант значения.
    MsgBox - сообщение, которое будет выведено в данном случае
    Case Else - ключевые слова, означающее выполнение кода, если ни одно из предыдущих вариантов не совпало.
    End Select - ключевое слово, означающее конец инструкции

    В инструкции Select Case "End Select ключевое слово Case Else является необязательным.

    Управляющая инструкция For Each Next
    Эта инструкция позволяет выполнять определённые действия с каждым об"ектом семейства или элементом массива.

    Пример с об"ектом Range:

    Sub TestForEachNextRange()


    i = i + 1
    iCell.Value = "Ячейка # " & i
    Next

    MsgBox "Число ячеек: " & i

    Комментарии:
    For Each - ключевые слова, означающее начало инструкции
    iCell - переменная, которой присваиваются значения элементов группы (массива или семейства) Для работы с элементами массива переменная должна принадлежать к типу Variant.
    In - ключевое слово, отделяющее переменную от группы
    Range("A1:C5") - группа, т.е. массив или семейство об"ектов. Количество повторений цикла зависит от числа элементов, входящих в группу. При первом выполнении цикла переменной присваивается значение самого первого элемента группы, а затем, всех последующих.
    Next - ключевое слово, при достижении которого управление опять переходит в начало цикла.
    MsgBox - сообщение о количестве элементов группы.

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


  • Пример манипуляции с об"ектом Range:

    Sub TestForEachNextRangeChanges()

    For Each iCell In Range("A1:C5")

    i = i + 1: iCell.Value = i

    If iCell.Value 5 Then
    iCell.Font.Size = 15
    iCell.Interior.ColorIndex = 50
    ElseIf iCell.Value = 13 Or iCell.Value = 5 Then
    iCell.Font.Size = 20
    iCell.Interior.ColorIndex = 3
    Else
    iCell.Clear
    End If

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

    Пример с семейством WorkSheets:

    Sub TestForEachNextSheet()

    For Each iList In Worksheets
    i = i + 1
    iNameList = iNameList & Chr(10) & iList.Name
    Next

    MsgBox "Число рабочих листов: " & i & Chr(10) & _
    "Имена рабочих листов: " & iNameList

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

    Принятие решений позволяет программистам контролировать поток выполнения сценария или одного из его разделов. Исполнение управляется одним или несколькими условными операторами.

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

    VBA предоставляет следующие типы решений. Нажмите следующие ссылки, чтобы проверить их данные.

    If...Then - Если То

    Оператор If состоит из логического выражения, за которым следуют одно или несколько операторов. Если условие называется Истинным, выполняются утверждения в условии If (s). Если условие называется False, выполняются инструкции после цикла If.

    Синтаксис

    Ниже приведен синтаксис оператора If в VBScript.

    If(boolean_expression) Then Statement 1 ..... ..... Statement n End If

    Диаграмма потока

    пример

    Private Sub if_demo_Click() Dim x As Integer Dim y As Integer x = 234 y = 32 If x > y Then MsgBox "X is Greater than Y" End If End Sub

    X is Greater than Y

    Если заявление состоит из логического выражения следует один или более операторов.

    if..else заявление

    Оператор If состоит из логического выражения, за которым следуют одно или несколько операторов. Если условие называется Истинным, выполняются утверждения в условии If (s). Если условие называется False, выполняются утверждения в разделе Else Part.

    Синтаксис

    Ниже приведен синтаксис оператора If Else в VBScript.

    If(boolean_expression) Then Statement 1 ..... ..... Statement n Else Statement 1 ..... .... Statement n End If

    Диаграмма потока

    пример

    Для демонстрационной цели давайте найдем самую большую из двух чисел Excel с помощью функции.

    Private Sub if_demo_Click() Dim x As Integer Dim y As Integer x = 234 y = 324 If x > y Then MsgBox "X is Greater than Y" Else Msgbox "Y is Greater than X" End If End Sub

    Когда приведенный выше код выполняется, он производит следующий результат.

    Y is Greater than X

    Если иное утверждение состоит из логического выражения следует один или более операторов. Если условие равно True, выполняются инструкции в операторах If . Если условие ложно, выполняется Else часть скрипта.

    if ... elseif..else statement

    Оператор If, за которым следует один или несколько инструкций ElseIf, которые состоят из булевых выражений, а затем следуют инструкции else по умолчанию, которая выполняется, когда все условие становится ложным.

    Синтаксис

    Ниже приведен синтаксис оператора If Elseif-Else в VBScript.

    If(boolean_expression) Then Statement 1 ..... ..... Statement n ElseIf (boolean_expression) Then Statement 1 ..... .... Statement n ElseIf (boolean_expression) Then Statement 1 ..... .... Statement n Else Statement 1 ..... .... Statement n End If

    Диаграмма потока

    пример

    Для демонстрационной цели давайте найдем самую большую из двух чисел Excel с помощью функции.

    Private Sub if_demo_Click() Dim x As Integer Dim y As Integer x = 234 y = 234 If x > y Then MsgBox "X is Greater than Y" ElseIf y > x Then Msgbox "Y is Greater than X" Else Msgbox "X and Y are EQUAL" End If End Sub

    Когда приведенный выше код выполняется, он производит следующий результат.

    X and Y are EQUAL

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

    вложенные операторы if

    Оператор If или ElseIf внутри другого оператора If или ElseIf. Внутренние операторы If выполняются на основе внешних операторов If. Это позволяет VBScript легко справляться с сложными условиями.

    Синтаксис

    Ниже приведен синтаксис инструкции Nested If в VBScript.

    If(boolean_expression) Then Statement 1 ..... ..... Statement n If(boolean_expression) Then Statement 1 ..... ..... Statement n ElseIf (boolean_expression) Then Statement 1 ..... .... Statement n Else Statement 1 ..... .... Statement n End If Else Statement 1 Statement n End If

    пример

    Для демонстрационной цели найдем тип положительного числа с помощью функции.

    Private Sub nested_if_demo_Click() Dim a As Integer a = 23 If a > 0 Then MsgBox "The Number is a POSITIVE Number" If a = 1 Then MsgBox "The Number is Neither Prime NOR Composite" ElseIf a = 2 Then MsgBox "The Number is the Only Even Prime Number" ElseIf a = 3 Then MsgBox "The Number is the Least Odd Prime Number" Else MsgBox "The Number is NOT 0,1,2 or 3" End If ElseIf a < 0 Then MsgBox "The Number is a NEGATIVE Number" Else MsgBox "The Number is ZERO" End If End Sub

    Когда приведенный выше код выполняется, он производит следующий результат.

    The Number is a POSITIVE Number
    The Number is NOT 0,1,2 or 3

    Если или ElseIf заявление внутри другого, если или ELSEIF заявление.

    инструкция switch

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

    Case Else - необязательный оператор в Select Case, однако для хорошей практики программирования всегда есть оператор Case Else.

    Синтаксис

    Ниже приведен синтаксис оператора Switch в VBScript.

    Select Case expression Case expressionlist1 statement1 statement2 .... .... statement1n Case expressionlist2 statement1 statement2 .... .... Case expressionlistn statement1 statement2 .... .... Case Else elsestatement1 elsestatement2 .... .... End Select

    пример

    Для демонстрационной цели найдем тип целого с помощью функции.

    Private Sub switch_demo_Click() Dim MyVar As Integer MyVar = 1 Select Case MyVar Case 1 MsgBox "The Number is the Least Composite Number" Case 2 MsgBox "The Number is the only Even Prime Number" Case 3 MsgBox "The Number is the Least Odd Prime Number" Case Else MsgBox "Unknown Number" End Select End Sub

    Когда приведенный выше код выполняется, он производит следующий результат.

    The Number is the Least Composite Number

    Переключатель заявление позволяет переменной быть проверены на равенство в отношении списка значений.

    Однострочная и многострочная конструкции оператора If...Then...Else и функция IIf, используемые в коде VBA Excel - синтаксис, компоненты, примеры.

    Оператор If...Then...Else

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

    Однострочная конструкция

    Оператор If...Then...Else может использоваться в однострочной конструкции без ключевых слов Else , End If .

    Синтаксис однострочной конструкции If...Then...

    If [условие] Then [операторы]

    Компоненты однострочной конструкции If...Then...

    • условие True или False ;
    • операторы условие возвращает значение True ;

    Если компонент условие возвращает значение False , блок операторов конструкции If...Then...

    Пример 1

    Sub primer1() Dim d As Integer, a As String d = InputBox("Введите число от 1 до 20", "Пример 1", 1) If d > 10 Then a = "Число " & d & " больше 10" MsgBox a End Sub

    Многострочная конструкция

    Синтаксис многострочной конструкции If...Then...Else

    If [условие] Then [операторы] ElseIf [условие] Then [операторы] ---------------- Else [операторы] End If

    Компоненты многострочной конструкции If...Then...Else :

    • условие - числовое или строковое выражение, следующее за ключевым словом If или ElseIf и возвращающее логическое значение True или False ;
    • операторы - блок операторов кода VBA Excel, который выполняется, если компонент условие возвращает значение True .
    • пунктирная линия обозначает дополнительные структурные блоки из строки ElseIf [условие] Then и строки [операторы] ;
    • блок операторов после ключевого слова Else выполняется в любом случае, но структурный блок кода из строки Else и строки [операторы] не является обязательным и может быть пропущен.

    Если компонент условие возвращает значение False , следующий за ним блок операторов конструкции If...Then...Else пропускается и управление программой передается следующей строке кода.

    Самый простой вариант многострочной конструкции If...Then...Else :

    If [условие] Then [операторы] Else [операторы] End If

    Пример 2

    Sub primer2() Dim d As Integer, a As String d = InputBox("Введите число от 1 до 40", "Пример 2", 1) If d < 11 Then a = "Число " & d & " входит в первую десятку" ElseIf d > 10 And d < 21 Then a = "Число " & d & " входит во вторую десятку" ElseIf d > 20 And d < 31 Then a = "Число " & d & " входит в третью десятку" Else a = "Число " & d & " входит в четвертую десятку" End If MsgBox a End Sub

    Функция IIf

    Функция IIf проверяет заданное условие и возвращает значение в зависимости от результата проверки.

    Синтаксис функции

    IIf ([условие], [если True], [если False])

    Компоненты функции IIf

    • условие - числовое или строковое выражение, возвращающее логическое значение True или False ;
    • если True IIf , если условие возвратило значение True ;
    • если False - значение, которое возвращает функция IIf , если условие возвратило значение False .

    Пример 3

    Sub primer3() Dim d As Integer, a As String d = InputBox("Введите число от 1 до 20", "Пример 3", 1) a = IIf(d < 10, d & " - число однозначное", _ d & " - число двузначное") MsgBox a End Sub

    При нажатии кнопки «Cancel» или закрытии крестиком диалогового окна InputBox из примеров, генерируется ошибка, так как в этих случаях возвращает пустую строку. Присвоение пустой строки переменной d типа Integer вызывает ошибку. При нажатии кнопки «OK» диалогового окна, числа, вписанные в поле ввода в текстовом формате, VBA Excel автоматически преобразует в числовой формат переменной d.


    Close