Из этого туториала Вы узнаете, как использовать вложенные операторы If в VBA.
Если операторы позволяют вам проверить одно условие в VBA, чтобы увидеть, является ли условие истинным или ложным, и в зависимости от ответа код будет двигаться в направлении истинного оператора или ложного оператора.
Единый оператор IF
1234567891011 | Дополнительный тест ЕслиDim x as Integerх = 10Если x = 10, то'если x равно 10, условие верноMsgBox x составляет 10 дюймовЕще'если x не 10, условие ложноMsgbox "x не 10"Конец, еслиКонец подписки |
Объяснение вложенных IF
Вложенное If позволяет вам поместить несколько условий ВНУТРИ каждого из операторов True и / или False исходного If.
1234567891011121314151617181920212223242526 | Sub TestNestedIf ()Dim x as IntegerDim y as IntegerDim z как целое числох = 10у = 9г = 8Если x = 10, то'если x равно 10, условие истинно, поэтому проверьте yЕсли y = 8, тоMsgBox "y равно 9"Еще'если y не 10, условие ложноMsgbox "y не 9"Конец, еслиЕще'если x не 10, то условие ложно, поэтому давайте' проверим zЕсли z = 8, тоMsgBox "z равно 8"Еще'если z не 8, условие ложноMsgbox "z не 10"Конец, если'another End If необходимо закрыть оригинал, еслиКонец, еслиКонец подписки |
Отступы в коде при его написании всегда являются хорошей практикой, так как это позволяет легко читать и следовать коду, когда вам нужно вернуться к нему на каком-то этапе или когда другой программист должен его прочитать.
Мы также могли бы создать пользовательскую функцию (UDF) и вызывать значения некоторых ячеек из Excel в функцию, используя параметры.
1234567891011121314151617181920 | Функция GetIf (x как целое число, y как целое число, z как целое число) как строкаЕсли x = 10, то'если x равно 10, условие истинно, поэтому проверьте yЕсли y = 8, тоGetIf = "y равно 9"Еще'если y не 10, условие ложноGetIf = "y не 9"Конец, еслиЕще'если x не 10, то условие ложно, поэтому давайте' проверим zЕсли z = 8, тоGetIf = "z равно 8"Еще'если z не 8, условие ложноGetIf = "z не 10"Конец, если'another End If необходимо закрыть оригинал, еслиКонец, еслиКонечная функция |
Вложенный, если практический пример
Рассмотрим следующую функцию:
12345678910111213141516171819202122 | Функция GetDiscount (dblPrice As Double) As DoubleЕсли dblPrice> = 1000 Тогда'если цена больше 1000, назначить скидкуЕсли dblPrice> = 2000 Тогда'если больше 2000, дайте скидку 10%GetDiscount = dblPrice * 0,1Еще'иначе дайте скидку 5%GetDiscount = dblPrice * 0,05Конец, если'если цена не больше 1000Еще'если больше 500, дайте скидку 2,5%Если dblPrice> = 500 ТогдаGetDiscount = dblPrice * 0,025Еще'иначе скидка не будетGetDiscount = 0Конец, если'another End If необходимо закрыть оригинал, еслиКонец, еслиКонечная функция |
Используя эту функцию в таблице Excel, мы можем проверить общую цену заказа и применить различные скидки в зависимости от этой суммы.
Программирование на VBA | Генератор кода действительно работает для вас!
Использование ElseIf
ElseIf позволяет нам упростить ваш код, поскольку он перемещается ко второму оператору if только в том случае, если первый возвращает ложь.
12345678910111213141516 | Функция GetDiscount (dblPrice As Double) As Double'используйте else, если сократить написание кодаЕсли dblPrice> = 2000 ТогдаGetDiscount = dblPrice * 0,1ElseIf dblPrice> = 1000 ТогдаGetDiscount = dblPrice * 0,075ElseIf dblPrice> = 500 ТогдаGetDiscount = dblPrice * 0,05ElseIf dblPrice> = 200 ТогдаGetDiscount = dblPrice * 0,025ElseIf dblPrice> = 100 ТогдаGetDiscount = dblPrice * 0,01ЕщеGetDiscount = 0Конец, еслиКонечная функция |
Использование оператора case
Мы также можем использовать оператор Case для достижения того же эффекта.
1234567891011121314151617 | Функция GetDiscount (dblPrice As Double) As DoubleВыберите регистр dblPrice'в этом случае имеется 6 различных уровней скидкиСлучай> = 2000GetDiscount = dblPrice * 0,1Случай> = 1000GetDiscount = dblPrice * 0,075Case Is> = 500GetDiscount = dblPrice * 0,05Случай> = 200GetDiscount = dblPrice * 0,025Случай> = 100GetDiscount = dblPrice * 0,01Case ElseGetDiscount = 0Конец ВыбратьКонечная функция |