До сих пор рассматривались процедуры и функции, которые 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.
Однострочная и многострочная конструкции оператора 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.
Основные операторы языка 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 обеспечивает многократное повторение блока операторов до тех пор, пока УСЛОВИЕ соблюдается, а оператор
Другие новости
Принятие решений позволяет программистам контролировать поток выполнения сценария или одного из его разделов. Исполнение управляется одним или несколькими условными операторами.
Ниже приведен общий вид типичной структуры принятия решений, найденной на большинстве языков программирования.
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
Переключатель заявление позволяет переменной быть проверены на равенство в отношении списка значений.
Условный оператор
Условный оператор 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. Вычислить.