Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология
Образование Политология Производство Психология Стандартизация Технологии


Инструкции управления порядком выполнения команд



 

Цель: Научиться правильно использовать инструкции управления порядком выполнения команд

 

Обычно процедура 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; Нарушение авторского права страницы


lektsia.com 2007 - 2024 год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! (0.028 с.)
Главная | Случайная страница | Обратная связь