Ветвления
Управляющие конструкции ветвления позволяют проверить некоторое условие и, в зависимости от результатов этой проверки, выполнить ту или иную группу операторов. Для организации ветвлений в 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. Это выражение может возвращать значение любого типа, например логическое, числовое или строковое.
Список выражений представляет собой одно или несколько выражений, разделенных запятой. При выполнении оператора проверяется, соответствует ли хотя бы один из элементов этого списка проверяемому выражению.
Эти элементы списка выражений могут иметь одну из следующих форм:
- <выражение> в данном случае проверяется, совпадает ли значение проверяемого выражения с этим выражением;
- <выражение1> То <выражение2>в этом случае проверяется, находится ли значение проверяемого выражения в указанном диапазоне значений;
- Is <логическийОператор> <выражение> в третьем случае проверяемое выражение сравнивается с указанным значением с помощью заданного логического оператора; например, условие is >= 10 считается выполненным, если проверяемое значение не меньше 10.
Если хотя бы один из элементов списка соответствует проверяемому выражению, то выполняется соответствующая группа операторов и на этом выполнение оператора Select Case заканчивается, а остальные списки выражений не проверяются, т. е. отыскивается только первый подходящий элемент списков выражений. Если же ни один из элементов всех этих списков не соответствует значению проверяемого выражения, выполняются операторы группы Else, если таковая присутствует.