HTML, Excel, Word, SEOОсновы VBA ⇒ Операторы ветвления VBA: простой выбор

Основы VBA

Самоучитель vba: Теория
..Первый макрос в Word
..Этапы записи макроса
..Запись макроса в Word
..Запись макроса в Excel
..Код макроса
..Выполнение макроса
..Типы данных VBA
..Переменные VBA
..Константы VBA
..Совместимость типов данных
..Арифметические операторы
..Логические операторы
..Строковые операторы
..Функции VBA ч.1
..Функции VBA ч.2
..Примеры использования функций
..Функции host-приложений
..Функции-процедуры
..Пользовательские функции в Excel
..Операторы ветвления: простой выбор
..Операторы ветвления: сложный выбор
..Использование MsgBox
..Прерывание процедур и функций
..Необязательные аргументы функций
..Циклы VBA ч.1
..Циклы ч.2
..Циклы ч.3
..Массивы VBA ч.1
..Массивы ч.2
..Массивы ч.3
..Управление файлами с помощью VBA
Самоучитель vba: Практика
Игра: Цепная реакция
Приложения
..Сумматор
..Наклейки
..Восьмерка
..Менеджер почты
Надстройки
..DEF
..SortSheets
..HideSheet



Операторы ветвления VBA: простой выбор

До сих пор рассматривались процедуры и функции, которые VBA выполняет в линейном порядке - VBA начинает выполнение кода с первого оператора после строки объявления процедуры (функции) и продолжает выполнять каждый оператор построчно до тех пор, пока не будет достигнут оператор End Sub (End Function). Такой линейный алгоритм можно представить нижеследующей блок-схемой:



Однако довольно часто встречаются ситуации, когда необходимо, чтобы процедуры или функции выполняли различные действия при разных условиях. Такую ситуацию иллюстрируют следующие блок-схемы:


 

Операторы, выполняющие роль ветвления программы на основании какого-либо условия, называются операторами условного перехода.

Простейшими операторами условного перехода являются операторы If..Then; If..Then..Else. Первый оператор позволяет выбирать единственную ветвь процедуры (левая блок-схема), тогда как второй дает возможность выбирать из двух альтернативных ветвей кода процедуры (правая блок-схема) на основе оценки того, является ли условие равным True или False.


Синтаксис If..Then


Вариант 1:
If Condition Then Statements

Вариант 2:
If Condition Then
   Statements
End If


Condition - логическое выражение;

Statements - один, несколько или ни одного оператора VBA.


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

Второй вариант позволяет указывать несколько операторов в разных строках.

Логика работы следующая: VBA сначала оценивает логическое выражение, представленное в секции Condition; если это логическое выражение равно True то выполняется оператор (операторы) секции Statements; затем VBA продолжает выполнение кода следующего за строкой If..Then (Вариант 1) или за ключевыми словами End If (Вариант 2). Если же логическое выражение равно False, то операторы секции Statements пропускаются и выполняется код, следующий за этой секцией.


Ниже приведен листинг элементарного использования первого варианта написания If..Then:




А теперь - второй вариант:



Обратите внимание, что операторы секции Statements написаны с использованием отступа (используется табуляция). Это важный момент. Следует сразу приучать себя к подобному оформлению программного кода - это повышает его удобочитаемость и значительно облегчает поиск ошибок.


Синтаксис If..Then..Else


Вариант 1:
If Condition Then Statements Else ElseStatements

Вариант 2:
If Condition Then
   Statements
Else
   ElseStatements
End If


Condition - логическое выражение;

Statements, ElseStatements - один, несколько или ни одного оператора VBA.


По аналогии с If..Then - первый вариант требует написания оператора в одну строку, при этом в секциях Statements и ElseStatements можно указывать несколько операторов, разделяя их двоеточием.

Второй вариант позволяет указывать несколько операторов в разных строках.

Логика работы следующая: VBA сначала оценивает логическое выражение, представленное в секции Condition; если это логическое выражение равно True то выполняется оператор (операторы) секции Statements; затем VBA продолжает выполнение кода следующего за строкой If..Then (Вариант 1) или за ключевыми словами End If (Вариант 2). Если же логическое выражение равно False, то выполняются операторы секции ElseStatements.

Следует сказать, что блок операторов If..Then..Else (Вариант 2) легче читать и понимать. Поэтому, советую использовать именно этот вариант, даже если в секциях Statements и ElseStatements будет находиться по одному оператору.






В начало страницы



В начало страницы