Ветвления
Управляющие
конструкции ветвления позволяют проверить некоторое условие и, в зависимости
от результатов этой проверки, выполнить ту или иную группу операторов. Для организации
ветвлений в VBA используются различные формы оператора ветвления If и-оператор
выбора Select Case.
Простейшая,
краткая форма оператора if используется для проверки одного условия, а затем
либо выполнения, либо пропуска одного оператора или блока из не
скольких
операторов. Краткая форма оператора ветвления if может иметь как однострочную,
так и блочную форму. В одну строку краткая форма If может быть записана так:
If
<условие> Then <оператор>
В блочной
форме краткое ветвление выглядит следующим образом:
If <условие> Then
<оператор1>
<оператор2>
End
If
В качестве
условия можно использовать логическое выражение, возвращающее значение True
или False, или любое арифметическое выражение. Если применяется арифметическое
выражение, то нулевое значение этого выражения эквивалентно логическому значению
False, а любое ненулевое выражение эквивалентно True. В том случае, когда условие
возвращает значение False, оператор или блок операторов, заключенных между ключевыми
словами Then и End if и составляющих тело краткого оператора ветвления, не будет
выполняться.
Замечание
Обратите внимание, что при записи краткого оператора ветвления в одну строку ключевые слова End I f не используются.
Полная форма
оператора if используется в тех случаях, когда имеются два различных блока операторов
и по результатам проверки условия нужно выполнить один из них. Такая форма if
не может записываться в одну строку и всегда имеет блочную форму записи:
If
<условие> Then
<блокОператоров1>
Else
<блокОператоров2>
End
If
Если условие
истинно, выполняется первый блок операторов, заключенный между ключевыми словами
Then и Else, а в противном случае — второй блок, заключенный между ключевыми
словами Else и End If.
Совет
Для того чтобы текст вашей процедуры был понятным и удобным для восприятия, рекомендуется делать отступы для групп операторов так, как это указано при описании их синтаксиса. В VBA предусмотрено удобное средство изменения отступов — нажатие на клавишу <Таb> увеличивает отступ вправо, нажатие комбинации клавиш <Shift>+<Tab> уменьшает этот отступ.
Иногда приходится
делать выбор одного действия из целой группы действий на основе проверки нескольких
различных условий. Для этого можно использовать цепочку операторов ветвления
If. . .Then. . . Elseif:
If
<условие1> Then
<блокОператоров!>
Elseif
<условие2> Then
<блокОператоров2>
Elseif
<условие3> Then
<блокОператоровЗ>
Elseif
<условиеN> Then
<блокОператоровN>
Else
<блокОператоров_Еlsе>
End
If
Такие цепочки
операторов If.. .Then. . .Elseif обладают большой гибкостью и позволяют решить
все проблемы, однако если выбор одной из нескольких возможностей все время основан
на различных значениях одного и того же выражения, гораздо удобнее использовать
специально предназначенный для этого оператор выбора Select Case, имеющий следующий
синтаксис:
Select Case <проверяемоеВыражение>
Case
<списокЗначений1>
<блокОператоров1>
Case
<списокЗначений2>
<блокОператоров2>
Case
<списокЗначенийЗ>
<блокОператоровЗ>
Case
Else
<блокОператоровЕlsе>
End
Select
Проверяемое
выражение вычисляется в начале работы оператора Select Case. Это выражение может
возвращать значение любого типа, например логическое, числовое или строковое.
Список выражений
представляет собой одно или несколько выражений, разделенных запятой. При выполнении
оператора проверяется, соответствует ли хотя бы один из элементов этого списка
проверяемому выражению.
Эти элементы списка выражений могут иметь одну из следующих форм:
Если хотя бы один из элементов списка соответствует проверяемому выражению, то выполняется соответствующая группа операторов и на этом выполнение оператора Select Case заканчивается, а остальные списки выражений не проверяются, т. е. отыскивается только первый подходящий элемент списков выражений. Если же ни один из элементов всех этих списков не соответствует значению проверяемого выражения, выполняются операторы группы Else, если таковая присутствует.