Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология Образование Политология Производство Психология Стандартизация Технологии |
Инструкции управления порядком выполнения команд
Цель: Научиться правильно использовать инструкции управления порядком выполнения команд
Обычно процедура VBA выполняет инструкцию Sub или Function, а затем все последующие инструкции до тех пор, пока не достигнет утверждения End Sub или End Function. Во многих случаях этого достаточно. Если затем снова запустить макрос, то повторно выполняется та же последовательность записанных действий. Однако иногда требуется многократно выполнять некоторый набор инструкций автоматически, либо решить определенную задачу по-другому в зависимости от значения переменных или параметров, заданных пользователем во время выполнения. VBA включает ряд инструкций, предназначенных для управления порядком выполнения команд программы. Инструкция If…Then…Else Инструкция If…Then…Else выполняет определенные команды или наборы команд в зависимости от значения условия. Данную инструкцию можно записать в одну или несколько строк. Инструкция If, записанная в одну строку, имеет следующий синтаксис:
If условие Then [инструкции] [Else инструкции_else] Параметр условие - логическое выражение, которое возвращает значение True или False. Если выражение равно True, то выполняются инструкции, а часть Else игнорируется. Если условие равно False, то игнорируются инструкции, а выполняются утверждения инструкции_else. Если же часть Else опущена и логическое условие равно False, то не выполняется ни одна из инструкций и управление передается следующей строке программы после инструкции If. Описанная форма условного оператора используется при обработке простых логических условий, например:
If Sales > 15000 Then Comission=0.08 Else Comission=0.05
В данном примере если сумма продаж больше 15000 грн., то комиссионные устанавливаются на уровне 8 процентов. В противном случае, взимается 5 процентов. Во многих реальных ситуациях требуется выполнить несколько инструкций, если условие истинно. В этих случаях необходимо использовать многострочный синтаксис:
If условие Then [инструкции] [ElseIf условие-n Then [инструкции_elseif]... [Else [инструкции_else]] End If Многострочная структура удобнее. Каждая группа инструкций может включать произвольное число утверждений. Приведем пример программы, в которой используется многострочный синтаксис инструкции If:
If Sales > 15000 Then Commission = 0.08 Rating = " Отлично" AnnualSales = AnnualSales + Sales Else Commission = 0.05 Rating = " Средне" AnnualSales = AnnualSales + Sales End If
Необязательная часть ElseIf используется для задания дополнительных условий в той же структуре:
If Sales > 15000 Then Commission = 0.08 Rating = " Отлично" ElseIf Sales > 12000 Then Commission = 0.07 Rating = " Хорошо" ElseIf Sales > 9000 Then Commission = 0.06 Rating = " Удовлетворительно" Else Commission = 0.05 Rating = " Неудовлетворительно" End If AnnualSales = AnnualSales + Sales
При использовании инструкции If следует обратить внимание на следующие особенности: · В многострочной структуре инструкции, которые выполняются если условие истинно, нельзя располагать утверждения на той же строке, что и ключевое слово Then. В противном случае не распознается многострочный синтаксис инструкции If. · В многострочной структуре каждой инструкции If должна соответствовать своя инструкция End If. В однострочном синтаксисе инструкции End If не имеется. Инструкция If может использоваться практически во всех случаях. Однако в VBA имеются и другие инструкции, которые в некоторых случаях оказываются более удобными. Инструкция Select Case Инструкция Select Case используется для выполнения одной из нескольких групп инструкций в зависимости от значения условия. Синтаксис данной команды имеет вид:
Select Case выражение [Case списокВыражений-n [инструкции-n]]... [Case Else [инструкции_else]] End Select
Параметр выражение - любое числовое или строковое выражение. Вместо вычисления логического условия выполняется сравнение значения выражения с каждой из величин, заданных параметром СписокВыражений-n. В инструкции может быть произвольное число блоков Case. Если ни одно из условий не является истинным, то выполняются инструкции блока Case Else. Рассмотрим пример, в котором определяется тариф за минуту телефонных переговоров с некоторым городом:
Select Case StateOfResidence Case " Прага" SalesTax = 0.0525 Case " Киев" SalesTax = 0.045 Case " Минск" SalesTax = 0.065 Case Else SalesTax = 0 End Select
В данном примере тариф зависит от города, с которым связывается клиент. Переменной StateOfResidence требуется предварительно присвоить строковое значение, которое затем сравнивается с названием каждого из перечисленных городов. Если совпадения значений не найдено, то плата за услуги не взимается. Инструкция Select Case может также использоваться для проверки вхождения значения в заданное множество величин, например, для задания системы скидок:
Select Case UnitsOrdered Case 1 To 10 Discount = 0 Case 11 To 19 Discount = 0.05 Case Is > = 20 Discount = 0.10 End Select
Обратите внимание, что выражение Case Is > = 20 позволяет обработать все значения переменной UnitsOrdered, которые больше 20. Если совпадений значений не обнаружено, то действий не производится, а управление передается команде, которая следует за инструкцией End Select. Рассмотрим следующий пример:
AreaCode = " 914" Select Case AreaCode Case " 212", " 718" City = " Нью Йорк" Case " 312" City = " Чикаго" Case " 213" City = " Париж" End Select
В данном примере, если значение переменной City не равно ни одному из названий городов, то она остается неинициализированной или сохраняет значение, заданное ей ранее. Это может привести к логической ошибке. Поэтому рекомендуется на всякий случай указывать в инструкции Select Case блок Case Else. Из простых логических условий можно составить сложные при помощи логических операций:
Сложные условия могут служить частями еще более сложных и т. д. Истинность любого условия можно вычислить при помощи таблицы значений логических операций: false AND false = false false OR true = true false AND true = false true OR false = true true AND false = false true OR true = true true AND true = true NOT false = true false OR false = false NOT true = false Практическое упражнение Напишем программу, которая по введенному названию месяца выводит количество дней в этом месяце, используя инструкцию Select Case. 1. Перейдите в редактор VBA и откройте окно проекта, если до этого оно было закрыто. 2. Отобразите окно модуля. В окне модуля введите следующую процедуру: Public Sub Месяцы() Dim Month As String Dim Day As String Month = InputBox(" Введите название месяца" ) Select Case Month Case " Январь", " Март", " Май", " Июль", _ " Август", " Октябрь", " Декабрь" Day = " 31" Case " Апрель", " Июнь", " Сентябрь", " Ноябрь" Day = " 30" Case " Февраль" Day = " 28 или 29" Case Else Day = " Ошибка ввода" End Select MsgBox Month & " - " & Day End Sub Знак подчеркивания ( _ ) в тексте программы используется тогда, когда строка программы выходит за пределы экрана, для упрощения восприятия текста. Контрольные вопросы 1. Правила записи инструкции If…Then…Else. Многострочная структура 2. Правила записи инструкции Select Case, параметры. 3. Логические операции. 4. Инструкция безусловного перехода. 5. Правила записи инструкции Операторы цикла |
Последнее изменение этой страницы: 2017-05-05; Просмотров: 827; Нарушение авторского права страницы