Иллюстрированный самоучитель по Microsoft Outlook 2002

Операторы

Далее идет список альтернатив, начинающихся ключевым словом case. В каждой альтернативе указан список значений, представляющий собой несколько возможных значений, разделенных запятой. При выполнении оператора select Case значение сравнивается со списками значений альтернатив. Элементы списка значений могут иметь одну из следующих форм:

  • Значение – в этом случае проверяется, совпадает ли значение проверяемого выражения с указанным значением;
  • Значение1 то Значение2 – проверяется, находится ли значение проверяемого выражения в диапазоне указанных значений;
  • Is логическаяОперация значение – в данном случае проверяется, удовлетворяет ли значение проверяемого выражения указанному логическому условию.

Вся конструкция работает следующим образом. Если хотя бы один из элементов списка значений соответствует проверяемому выражению, то выполняется соответствующий блок операторов и на этом выполнение оператора Select Case заканчивается. Если же ни один из элементов всех списков альтернатив не соответствует значению проверяемого выражения, выполняется блокОператоров_Еlsе (если, конечно, присутствует ключевое слово Case Else).

В следующем примере при помощи функции inputBox переменной t присваивается некое значение, после чего посредством оператора select Case проверяется положительность значения переменной. Заметьте, что предусмотрен вариант, когда пользователь введет не число.

Программа 20.10. Использование оператора Select Case.

Sub branchLinef) Dim t As Integer
labelInput: t = InputBox("Введите число") If(Not(IsNumeric(t))) Then
Call MsgBox("Введено не число", vbCritical)
GoTo labellnput End If
Select Case t Case 0
Msgbox("Введен 0") Case 1 To 100
MsgBox("Введено положительное число") Case - 100 To - 1
MsgBox("Введено отрицательное число") Case Is < -100, Is > 100
MsgBox("Число больше 100 или меньше - 100") Case Else
MsgBox("Не может быть") End Select End Sub

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

Помимо условных операторов, в VBA существует оператор безусловного перехода, который также меняет порядок выполнения операторов в программе (безусловно):

GoTo имяМетки

После ключевого слова идет имя метки. Метка – это идентификатор, приписанный оператору программы и используемый в других частях программы для обращения к этому оператору. Метка может быть определена как до, так и после ключевого оператора GOTO, причем она должна отделятся от помеченного ею оператора двоеточием. В примере, приведенном выше, в случае введения нечислового значения, выполняется безусловный переход и пользователю заново предлагается ввести число.

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

От операторов ветвления перейдем к рассмотрению операторов цикла. Если бы при выполнении программы каждый оператор выполнялся только один раз, программирование не имело бы особого смысла. Действительно, выполнить вручную какую-нибудь арифметическую операцию над данными ненамного труднее, чем написать соответствующий оператор присваивания в программе. Весь смысл программирования состоит в том, чтобы поручить компьютеру проведение многочисленных расчетов, записав это поручение в компактной форме. Для решения таких задач существуют операторы цикла. Циклы позволяют многократно выполнять отдельный оператор или группу операторов.

Операторы цикла VBA делятся на три группы:

  • циклы со счетчиком (For…Next);
  • циклы с условием (Dо…Loop);
  • Циклы по структуре данных (For Each…Next).

Первый из рассматриваемых нами операторов цикла – For…Next. Данный оператор позволяет выполнять группу операторов (которая называется телом цикла) заранее определенное количество раз, при этом параметр цикла последовательно принимает ряд значений, определенных пользователем в заголовке цикла.

For счетчик = начало То конец [Step шаг]
[блокОператоров1] [Exit For]
[блокОператоров2] Next [счетчик]

Счетчик – это и есть тот числовой параметр цикла, который должен принимать ряд значений от значения начало до значения конец. Причем этот ряд может образовывать как возрастающую, так и убывающую арифметическую прогрессию. Необязательный параметр шаг, при необходимости мог бы указывать, с каким шагом следует пробегать заданный ряд значений (по умолчанию он равен 1).

БлокОператоров1 – это блок операторов, который будет выполнен, пока счетчик не пробежит ряд значений до конца. Прервать же данный пробег вправе только оператор Exit For, предназначенный для выхода из цикла, не дожидаясь его завершения и передачи управления оператору, следующему непосредственно за Next. Как правило, оператор используется в тех местах тела цикла, где требуется из него выйти по условию.

В конце цикла ставится заключительный оператор Next, после которого указывается счетчик цикла. Хотя данное указание необязательно, мы рекомендуем всегда его использовать, поскольку программа станет более понятной, особенно в случае большого количества вложенных циклов.

Если Вы заметили ошибку, выделите, пожалуйста, необходимый текст и нажмите CTRL + Enter, чтобы сообщить об этом редактору.