Excel vba условие if then. Операторы ветвления VBA: простой выбор. If условие then выражение
Зачастую в определенном месте программы необходимо выполнять те или иные операторы, в зависимости от некоторых условий. Эта возможность в Visual Basic реализовать при помощи так называемых управляющих конструкций (или структур), которые в свою очередь состоят из структур принятий решений и циклов. Ниже приводится подробное описание двух существующих конструкций принятия решений.
Конструкция If:Then. Существует несколько разновидностей данной структуры. Если при выполнении какого-либо условия необходимо выполнять один оператор, то нужно использовать конструкцию следующего вида:
If условие Then оператор
В том случае, когда результатом проверки условия является значение True (истина), то выполняется оператор, находящийся после служебного слова Then. С другой стороны, если после проверки условия было получено значение False (ложь), то выполнить следующий по порядку оператор. Все описанные параметры данной структуры должны быть указаны в одной строке.
Если при выполнении условия требуется выполнить не один, а несколько операторов, то следует использовать такую конструкцию:
If условия Then Операторы End If
В случае истинности проверяемого условия будут выполнены операторы, расположенные после ключевого слова Then. С другой стороны, если условие является ложным, то выполняется следующий после данной конструкции оператор. В том случае, когда в блоке операторы находится только один оператор, то данная структура все равно должна заканчиваться служебным словосочетанием End If.
При необходимости выполнении того или иного оператора (или блока операторов) в зависимости от результата проверки определенного условия, в языке Visual Basic следует использовать такую конструкцию:
If условия Then Операторы1 Else Операторы2 End If
If условие Then Операторы1 Else: Операторы2 End If
Если результат проверки условия является значение True, то будет выполнен блок операторы1, находящийся после ключевого слова Then. С другой стороны, если проверка условия дала результат False, то будет выполнен блок операторы2, расположенный после служебного слова Else.
Во втором из приведенных вариантов в качестве блока операторы2 может использоваться как один оператор (тогда он записывается после знака ":" в той же строке, что и служебное слово Else), так и несколько (при этом каждый оператор, начинается со второго, записывается в отдельной строке).
В том случае, когда определенное действие (или набор действий) нужно выполнять после проверки не одного, а нескольких условий на языке Visual Basic следует использовать такую управляющую структуру:
If условие Then Операторы1 ElseIf условие2 Then Операторы2 . . End If
Если условие1, находящееся после ключевого слова If, истинно, то выполняется блок операторы1, расположенный после Then. Если же оно ложно, то осуществляется проверка условия2, находящегося после служебного слова ElseIf, в случае его истинности выполняется блок операторы2 и т.д. Если ни одно из условий не является истинным, то есть результатом всех проверок является значение False, то выполнятся блок операторыN, расположенный после ключевого слова Else (данный блок является необязательным).
В дополнение к приведенной выше структуре If:Then следует также рассмотреть функцию IIf, которая возвращает одно из двух значений, в зависимости от проверяемого условия.
Синтаксис данной функции имеет вид:
IIf(условие, значение1, значение2)
В том случае, когда результатом проверки условия является значение True, функция возвращает значение1, а когда проверка дает значение False, то возвращаемы результат - значение2. Например:
Dim intA As Integer, strA As String intA = 6 strA = IIf(intA Mod 2=0, "Четное", "Не четное")
Если число intA делится на 2 без остатка, то строке strA будет присвоено значение "Четное", в противном случае - "Не четное".
Конструкция Select:Case. Когда существует несколько операторов (или блоков операторов), которые необходимо выполнять в случае истинности того или иного условия, то запись конструкции If:Then окажется достаточно громоздкой. Поэтому в подобных случаях следует использовать структуру Select:Case, которая улучшает читаемость программы. Ее конструкция выглядит следующим образом:
Select Case переменная Case значения1 Операторы1 Case значения2 Операторы2 . . . End Select
Если переменная содержит значение1, расположенное после первого по порядка ключевого слова Case, то выполняется блок операторы1. С другой стороны, если содержимое переменной равно значению2, то выполняется блок операторы2 и т.д. Когда содержимое переменной не равно ни одному из приведенных значений, то выполняется блок операторыN, находящийся после служебного словосочетания Case:Else, которое является необязательным в рассматриваемой конструкции.
В том случае, когда при нескольких значениях переменной необходимо выполнять один и тот же оператор (блок операторов), то список этих значений нужно указать после ключевого слова Case, разделяя их запятыми.
Например:
Select Case x Case 1 x=x+1 Case 2, 3, 4 x=10 Case Else x=20 End Select
Условный оператор
Условный оператор VBA позволяет проверить некоторое условие и в зависимости от результатов проверки выполнить то или иное действие. Таким образом, условный оператор это средство ветвления вычислительного процесса.
В VBA существует 2 типа условного оператора: линейный и блочный.
1. Линейный условный оператор используется для того, чтобы выполнить какой-либо один оператор, если некоторое условие будет истинным.
Синтаксическая конструкция линейного оператора имеет две формы: безальтернативную, альтернативную.
Структура безальтернативного условного оператора (сокращенный вариант):
If <условие> Then <оператор 1>
Структура альтернативного условного оператора (полный вариант):
If <условие> Then <оператор 1> Else <оператор 2>
где
If , Then , Else - зарезервированные слова (если, то, иначе);
<условие> - произвольное выражение логического типа;
<оператор 1>, <оператор 2> - любые операторы языка VBA .
Работа. Вначале вычисляется условное выражение <условие>. Если результат есть True (истина), то выполняется <оператор 1>, а <оператор 2> пропускается. Если результат есть False (ложь), наоборот, <оператор 1> пропускается, а выполняется <оператор 2>.
2. Блочный условный оператор используется в случае истинности условия необходимо выполнить несколько программных операторов (блок операторов). Блочный оператор имеет две формы: безальтернативный, альтернативный.
Структура безальтернативного блочного оператора (сокращенный вариант )
If <условие> Then
<оператор1>
<оператор2>
…………….
<оператор n >
End If
где
End If - указывает на окончание блока оператора If .
Структура альтернативного блочного оператора:
If <условие> Then
<оператор1>
<оператор2>
…………….
<оператор n >
Else
<оператор1>
<оператор2>
…………….
<оператор n >
End If
Пример 1.
Постановка задачи. Создать в стандартном модуле пользовательскую процедуру вычисления уравнения вида ax 2 + bx + c = 0.
1. Исходные данные:
a , b , c R
Результат: х1, х2 R .
2.Набрать в стандартном модуле проекта следующую пользовательскую процедуру:
Private Sub yravnenie ()
a = InputBox("a=", a)
b = InputBox("b=", b)
c = InputBox("c=", c)
d = b ^ 2 - 4 * a * c
If d >= 0 Then
x1 = (-b + Sqr(d)) / (2 * a)
x2 = (-b - Sqr(d)) / (2 * a)
MsgBox (x1)
MsgBox (x2)
Else
MsgBox (" Решений нет ")
End If
End Sub
Альтернативный блочный оператор If применяется в тех случаях, когда при выполнении условия необходимо осуществить один набор программных операторов, а при невыполнении другой.
Операторы IF могут быть вложенными друг в друга. Такое вложение операторов применяется, если нужно проверить какое-либо условие при другом условии, которое является истинным.
Формат вложенного оператора If :
If <условие1> Then
If <условие2> Then
<оператор1>
<оператор2>
…………….
<оператор n >
Else
<оператор1>
<оператор2>
…………….
< оператор n>
End If
End If
Пример 2.
Постановка задачи. Создать в стандартном модуле пользовательскую функцию нахождения максимального среди трех заданных чисел y 1 = a +2* b ; y 2 = a * b + c ; y 3 = c 2 + 1.
Технология выполнения задания:
1. Исходные данные:
a , b , c R
Результат: Max R.
2.Набрать в стандартном модуле проекта следующую пользовательскую функцию:
Function y (a,b,c)
y1 = a+2*b
y2 = a*b+c
y3 = c^2+1
If y1 > y2 Then
If y1 > y3 Then y = y1 Else y = y3
Else
If y2 > y3 Then y = y2 Else y = y3
End If
End Function
3.Вычислить корни квадратного уравнения при произвольных исходных данных.
При использовании вложенных операторов If важно не перепутать варианты сочетания условий. Нужно помнить правило: альтернатива Else считается принадлежащей ближайшему оператору If , не имеющему ветви Else .
В VBA предусмотрена конструкция для работы с несколькими операторами If . Эти операторы применяются в случаях, когда необходимо рассмотреть еще несколько условий в дополнение к исходному. Для этого служит конструкция: If … Then … ElseIf . В отличие от вложенных операторов конструкция с несколькими операторами If позволяет проверить дополнительное условие, если исходное условие принимает значение False .
Формат записи:
If <условие1> Then
<оператор1>
ElseIf <условие2> Then
<оператор2>
Else
<.оператор3>
EndIf
Пример 3.
Постановка задачи. Менеджеру по продажам необходимо разработать функцию, позволяющую рассчитывать комиссионные. Процент комиссионных зависит от объема проданного товара и начисляется по следующему правилу, представленному в таблице 15.
Правила расчета комиссионных
Объем продаж за неделю, р. |
Комиссионные, % |
От 0 до 9999 |
|
От 10000 до 19999 |
|
От 20000 до 39999 |
|
Более 40000 |
Технология выполнения задания:
1. Исходные данные:
Продажи Z .
Результат: Комиссионные R .
2. Построить для расчета комиссионных в стандартном модуле пользовательскую функцию:
Function Комиссионные (Продажи)
If Продажи <= 9999 Then
Комиссионные = Продажи * 0.08
ElseIf Продажи <= 19999 Then
Комиссионные = Продажи * 0.1
ElseIf Продажи <= 39999 Then
Комиссионные = Продажи * 0.12
Else
Комиссионные = Продажи * 0.14
End If
End Function
3. Вычислить.
Основные операторы языка VBA
Комментарии (0)
3.1. Правила записи операторов
При записи операторов необходимо придерживаться следующих правил:
Каждый новый оператор записывается с новой строки.
Чтобы записать несколько операторов на одной строке, их разделяют между собой двоеточием (:).
Если оператор не помещается в одной строке, то необходимо поставить в конце строки пробел и знак подчеркивания (_), а затем продолжить не поместившуюся часть на следующей строке.
3.2. Оператор присваивания
Оператор присваивания используется, если какой-то переменной нужно присвоить новое значение. Он имеет следующий синтаксис:
ИМЯ_ПЕРЕМЕННОЙ = ВЫРАЖЕНИЕ
Сначала вычисляется выражение в правой части, а затем результат присваивается переменной, стоящей в левой части.
Например . Записать с помощью оператора присваивания следующее математическое выражение:
На VВА это выражение можно записать в виде следующего оператора:
Y = a^(1/3)+(a^2+Exp(-b))/(Sin(a)^2-Log(b))
3 .3. Операторы ввода-вывода
3 .3.1. Оператор и функция MsgBox
Оператор MsgBox осуществляет вывод информации в диалоговом окне и устанавливает режим ожидания нажатия кнопки пользователем.
Он имеет следующий синтаксис:
MsgBox Сообщение[,Кнопки][, Заголовок]
Аргументы:
Сообщение - обязательный аргумент, задающий в окне выводимое информационное сообщение. Может состоять из нескольких текстовых строк, объединенных знаком & . Использование в этом аргументе Chr(13) приводит к переходу на новую строку при выводе информации.
Кнопки - значение этого аргумента определяет категории появляющихся в окне кнопок. От значения аргумента кнопкизависит также, появляется ли в окне какой-либо значок. Если не указано, какие кнопки необходимо отображать в окне сообщений, то используется значение по умолчанию, соответствующее кнопке ОК. В табл. 3.1 приведены возможные комбинации кнопок и значков в окне сообщений.
Заголовок - задает заголовок окна.
Функция MsgBox возвращает значение типа Integer, указывающее, какая кнопка была нажата в диалоговом окне.
Таблица 3.1. Допустимые значения переменной кнопки
Отображение |
Аргумент |
Кнопка ОК |
|
Кнопки ОК и Отмена |
|
Кнопки Да и Нет |
|
Кнопки Да, Нет и Отмена |
|
Кнопки Прекратить, Повторить и Игнорировать |
VbAbortRetryIgnore |
Кнопки Повторить и Отмена. |
|
Информационный знак |
|
Знак вопроса |
|
Знак восклицания |
Например . Вывести сообщение о текущей дате.
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 E lse ОПЕРАТОР_2
ОПЕРАТОР_1 выполняется, если УСЛОВИЕ истинно, в противном случае выполняется ОПЕРАТОР_2 . При этом оператор If…Then…Else записывается в одну строку.
УСЛОВИЕ - это выражение логического типа. Результат выражения всегда имеет булевский тип. Выражение может быть простым и сложным. При записи простых условий могут использоваться все возможные операции отношения, указанные в табл. 3.2.
Таблица 3 .2. Логические отношения
Операция |
Название |
Выражение |
Результат |
True, если А равно В |
|||
True, если А не равно В |
|||
True, если А,больше В |
|||
True, если А меньше В |
|||
Больше или равно |
True, если А больше или равно В |
||
Меньше или равно |
True, если А меньше или равно В |
Сложные условия образуются из простых путем применения логических операций и круглых скобок. Список логических операций приведен в табл. 3.3.
Таблица 3 .3. Логические операции
Название |
Выражение |
Результат |
|||
Логическое |
|||||
Логическое И |
|||||
Логическое ИЛИ |
В условном операторе допустимо использование блока операторов вместо любого из операторов. В этом случае условный оператор имеет вид:
If УСЛОВИЕ Then
БЛОК_ОПЕРАТОРОВ_1
БЛОК_ОПЕРАТОРОВ_2
End I f
В условном операторе может проверяться несколько условий. В этом случае условный оператор имеет вид:
If УСЛОВИЕ_1 Then
БЛОК_ОПЕРАТОРОВ_1
ElseIf УСЛОВИЕ_2 Then
БЛОК_ОПЕРАТОРОВ_2
Else
End If
Пример 1 . Написать часть программы для алгоритма на рис. 3.3.
Пример 2. Написать часть программы для алгоритма на рис. 3.4.
3.5. Оператор выбора Select Case
Оператор Select Case удобно использовать, когда в зависимости от значения некоторого выражения, имеющего конечное множество допустимых значений, необходимо выполнить разные действия. Он также относится к условным операторам, но имеет другой вид:
Select Case ПРОВЕРЯЕМОЕ_ВЫРАЖЕНИЕ
Case ЗНАЧЕНИЯ_1
ОПЕРАТОРЫ_1
Case ЗНАЧЕНИЯ _ 2
ОПЕРАТОРЫ _ 2
. . .
Case ЗНАЧЕНИЯ_N
ОПЕРАТОРЫ _N
[ Case Else
ИНАЧЕ _ ОПЕРАТОРЫ]
End Select
ПРОВЕРЯЕМОЕ_ВЫРАЖЕНИЕ может иметь любой скалярный тип, кроме вещественного. ЗНАЧЕНИЯ состоят из произвольного количества значений или диапазонов, отделенных друг от друга запятыми.
Тип ЗНАЧЕНИЙ должен совпадать с типом ПРОВЕРЯЕМОГО_ВЫРАЖЕНИЯ .
Сначала вычисляется ПРОВЕРЯЕМОЕ_ВЫРАЖЕНИЕ . Если его значение совпадает с одним из значений ЗНАЧЕНИЯ_I , то выполнятся ОПЕРАТОРЫ_I End Select . Если его значение не совпадает ни с одним из значений ЗНАЧЕНИЯ_I , то выполнятся ИНАЧЕ_ОПЕРАТОРЫ и управление передается оператору, стоящему после End Select
Например. Написать часть программы для алгоритма на рис. 3.5, определяющего значение переменной S в зависимости от значения переменной n.
3.6. Операторы цикла
Для реализации циклического вычислительного процесса, т. е. многократного выполнения одного или нескольких операторов, служит оператор цикла For…Next , который имеет следующий синтаксис:
For СЧЕТЧИК=НАЧ_ЗНАЧЕНИЕ Т o КОН_ЗНАЧЕНИЕ Step ШАГ
БЛОК_ОПЕРАТОРОВ
БЛОК_ОПЕРАТОРОВ
Next СЧЕТЧИК
Цикл For…Next перебирает значения переменной СЧЕТЧИК , которая является параметром цикла, от начального до конечного значения с указанным шагом изменения. При этом обеспечивается выполнение блока операторов тела цикла при каждом новом значении счетчика. Если Step ШАГ в конструкции отсутствует, то по умолчанию считается, что шаг равен 1. По оператору Exit For можно выйти из оператора цикла до того, как СЧЕТЧИК достигнет последнего значения.*
Для перебора объектов из группы подобных объектов, например, ячеек из диапазона или элементов массива, удобно использовать оператор цикла For… Each…Next .
For Each Элемент In Группа
БЛОК _ ОПЕРАТОРОВ
БЛОК_ОПЕРАТОРОВ
Next Элемент
В VBA для организации циклов с неизвестным заранее числом повторений используются и другие операторы цикла:
циклы с предусловием - Do While … Loop ,
Do Until … Loop ;
циклы с постусловием - Do … Loop While ,
Do … Loop Until .
Ниже приведен синтаксис этих операторов цикла:
" Цикл с предусловием Do While … Loop
Do While УСЛОВИЕ
БЛОК_ОПЕРАТОРОВ
БЛОК_ОПЕРАТОРОВ
" Цикл с предусловием Do Until … Loop
Do Until УСЛОВИЕ
БЛОК_ОПЕРАТОРОВ
БЛОК_ОПЕРАТОРОВ
" Цикл с постусловием Do … Loop While
БЛОК _ ОПЕРАТОРОВ
БЛОК_ОПЕРАТОРОВ
Loop While УСЛОВИЕ
" Цикл с постусловием Do … Loop Until
БЛОК _ ОПЕРАТОРОВ
БЛОК_ОПЕРАТОРОВ
Loop Until УСЛОВИЕ
Оператор Do W hile…Loop обеспечивает многократное повторение блока операторов до тех пор, пока УСЛОВИЕ соблюдается, а оператор
Другие новости
3.5.1 Операторы условного и безусловного перехода . Оператор If… Then... Else
Проверка условий в VBA, оператор If...Then... Else, вложенные конструкции If
Операторы условного перехода - одни из самых важных и часто используемых элементов в языках программирования. Общий принцип их работы прост: проверяется соответствие каким-то условиям (истинность или ложность каких-либо выражений) и в зависимости от этого выполнение программы направляется по одной или другой ветви. В VBA предусмотрено два оператора условного перехода: If… Then... Else и Select Case.
Оператор If… Then ... Else - самый популярный у программистов. Полный его синтаксис выглядит так:
If Условие Then
Команды1
При этом:
- Условие - выражение, которое проверяется на истинность. Если оно истинно, то выполняются Команды1, если ложно - Команды2;
- УсловияN - дополнительные условия, которые также можно проверить. В случае, если они выполняются (выражение УсловияN истинно), то выполняются КомандыN.
Оператор If…Then... Else применяется:
- когда нужно проверить на соответствие одному условию и в случае соответствия сделать какое-то действие:
If nTemperature < 10 Then
MsgBox "Одеть куртку"
- когда нужно сделать то, же что и в предыдущем примере, а в случае несоответствия выполнить другое действие:
If nTemperature < 10 Then
MsgBox "Одеть куртку"
MsgBox "Одеть ветровку"
- когда нужно проверить на соответствие нескольким условиям (обратите внимание на использование логических операторов):
If (nTemperature < 10) And (bRain = True) Then
MsgBox "Одеть куртку и взять зонтик"
- когда в случае, если первая проверка вернула False, нужно проверить на соответствие еще нескольким условиям (в этом случае удобно использовать ElseIf):
If (bIGoInCar = True) Then
MsgBox "Одеться для машины"
ElseIf nTemperature < 10 Then
MsgBox "Одеть куртку"
MsgBox "Можно идти в рубашке"
В этом примере, поскольку bIGoInCar - переменная типа Boolean и сама по себе принимает значения True или False, первая строка может выглядеть так:
If bIGoInCar Then …
Некоторые замечания по использованию If…Then... Else:
- ключевое слово Then должно находиться в одной строке с If и условием. Если вы перенесете его на следующую строку, будет выдано сообщение об ошибке;
- если разместить команду, которую нужно выполнить при истинности проверяемого условия, на одной строке с If и Then, то End If можно не писать:
If nTemperature < 10 Then MsgBox "Одеть куртку"
- если же вы используете несколько команд или конструкции Else/ElseIf, то End If в конце нужно писать обязательно - иначе возникнет синтаксическая ошибка.
- для выражения If…Then настоятельно рекомендуется использовать отступы для выделения блоков команд. Иначе читать код будет трудно.
- операторы If…Then можно вкладывать друг в друга:
If MyVar = 5 Then
MsgBox “MyVar = 5”
If MyVar = 10 Then
MsgBox “MyVar = 10”
Однострочная и многострочная конструкции оператора 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.