Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Программирование в Excel.doc
Скачиваний:
21
Добавлен:
03.05.2019
Размер:
1.48 Mб
Скачать

1.3. Управляющие конструкции

Эти конструкции управляют ходом выполнения программы. В их отсутствие она выполняется последовательно. Но такое допустимо лишь в самых простейших программах. Поэтому любой язык программирования позволяет изменять порядок выполнения операторов за счет ветвления и циклов.

1.3.1. Операторы ветвления

В программах на Visual Basic можно проверять условия и выполнять действия в зависимости от результатов проверки. Предназначенные для этого операторы Visual Basic перечислены в таблице:

Чтобы проверить:

Используйте:

Одно условие и выполнить оператор или блок операторов

If...Then

Одно условие и выбрать один из двух блоков операторов

lf...Then...Else

Более одного условия и выполнить один из нескольких блоков операторов

If... Then. ..Elself

Одно условие и выполнить один из нескольких блоков операторов

Select Case

1.3.1.1. lf...Then

Позволяет выполнять один или несколько операторов, если условие истинно. Можно использовать однострочный или блочный синтаксис. Следующий пример иллюстрирует обе формы:

If thisVal < 0 Then thisVal = 0

If thisVal > 5 Then thatVal = thisVal + 25 thisVal = 0 End If

В однострочной форме оператор End If не применяется. А если Вы хотите выполнить более одной строки кода, когда опенка условного выражения дает True, Вам нужен блочный вариант — lf...Then...End If.

1.3.1.2. If...Then...Else

Позволяет определить 2 блока операторов. Первый блок выполняется, когда условие истинно, а второй — когда оно ложно.

If age < 16 Then MsgBox "You are not old enough for a license. " Else MsgBox "You can be tested for a license. " End If

1.3.1.3. lf...Then...Elself

Для проверки дополнительных условий не обязательно вкладывать операторы If...Then друг в друга — можно добавить операторы ElseIf, и тогда Ваш код станет легче читаемым и лаконичным. Допустим, Вам нужно рассчитать премии сотрудникам с учетом их вклада в общее дело. Процедура типа Function из следующего примера использует для этого серию операторов ElseIf:

Function Bonus(jobClass, salary, rating) If jobClass = 1 Then Bonus = salary * 0.1 * rating / 10 ElseIf jobClass = 2 Then Bonus = salary * 0.09 * rating / 10 ElseIf jobClass = 3 Then Bonus = salary * 0.07 * rating / 10 Else Bonus = 0 End If End Function

Оператор If...Then...ElseIf очень гибок. Вы можете начать с простого оператора If...Then, а потом добавлять операторы Else и ElseIf по мере необходимости. Но если все операторы ElseIf сравнивают одно и то же выражение с разными значениями, лучше воспользоваться оператором Select Case.

1.3.1.4. Select Case

Оператор Select Case заменяет серию операторов ElseIf в том случае, когда одно выражение сравнивается с несколькими значениями. Он обеспечивает ветвление по условию, аналогичное возможностям оператора If...Then...ElseIf; но делает код эффективнее и читабельнее.

Например, чтобы добавить еще несколько уровней в предыдущий фрагмент, нужно было бы ввести дополнительные операторы ElseIf, однако мы перепишем функцию на основе оператора Select Case:

Function Bonus(jobClass, salary, rating) Select Case jobClass Case 1 Bonus = salary * 0.1 * rating / 10 Case 2 Bonus = salary * 0.09 * rating / 10 Case 3 Bonus = salary * 0.07 * rating / 10 Case 4, 5 ' можно включать несколько значений... Bonus = salary * 0.05 * rating / 5 Case 6 To 8 ' ...или задавать диапазон Bonus = 150 Case Is > 8 ' ...или сравнивать с другими значениями Bonus = 100 Case Else Bonus = 0 End Select End Function

Заметьте, что в конструкции Select Case вычисляется только одно выражение — в самом ее начале. Оператор If...Then...ElseIf, напротив, позволяет проверять разные выражения в каждом ElseIf. Поэтому оператор If...Then...ElseIf можно заменить оператором Select Case, только если все ElseIf вычисляют одно выражение.