Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
VBA (методичка).doc
Скачиваний:
0
Добавлен:
01.04.2025
Размер:
2.3 Mб
Скачать

Оператор выбора Select Case

Если выбор одной из нескольких возможностей основан на значении одного и того же выражения, то удобно использовать предназначенный для этого оператор выбора Select Case, имеющий следующий вид:

Select Case выражение

Case Списокзначений1

БлокОператоров1

[Case СписокзначенийN

БлокОператоровN]

[Case Else

БлокОператоров_Else]

End Select

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

Например:

Sub ПримерИспользованияОператораSelect()

‘Вводится строка, обозначающая день недели.

‘Определить, выходной это день или рабочий.

Dim День As String, Строка As String

Строка = "Введите день недели"

День = InputBox(Строка) ‘Вводится день недели

Select Case День

Case "Суббота", "Воскресенье"

MsgBox ("Выходной")

Case Else

MsgBox ("Рабочий")

End Select

End Sub

Функция iIf

Используется в случае с простым ветвлением. Имеет следующий вид:

IIf (выражение, значениеЕслиДа, значениеЕслиНет)

Эта функция проверяет значение выражения, если оно истинно, то функция возвращает значениеЕслиДа, в противном случае – значениеЕслиНет.

Например:

D2 = IIf (I<=10, 250, 50)

В зависимости от значения величины I переменной D2 будет присвоено либо значение 250, либо 50.

9.3Оператор безусловного перехода GoTo

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

GoTo имяМетки

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

Для того чтобы отметить оператор в программе, указывается имя метки, ставится двоеточие и указывается нужный оператор. Для того чтобы организовать переход на отмеченный оператор, указывается служебное слово GoTo и указывается имя метки, на которую осуществляется переход.

Пример:

Label1: MsgBox (“Использование метки”)

GoTo label1

9.4Операторы цикла

ForNext (цикл со счетчиком)

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

For счетчик = начало To конец [Step шаг]

[БлокОператоров1]

[Exit For]

[БлокОператоров2]

Next [счетчик]

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

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

В конце цикла ставится заключительный оператор Next, после которого указывается счетчик цикла.

DoLoop (цикл с условием)

Если не известно заранее сколько раз должно выполняться тело цикла, но известно условие при котором цикл должен продолжать или прекращать свою работу, то используется цикл с условием.

Существует два вида циклов с условием: с предусловием и с постусловием. Соответственно цикл Do … Loop имеет две синтаксические конструкции:

/Предусловие/

Do [{While  Until} условие]

[блокОператоров1]

[Exit Do]

[блокОператоров2]

Loop

/Постусловие/

Do

[блокОператоров1]

[Exit Do]

[блокОператоров2]

Loop [{While  Until} условие]

Различие конструкций в том, что в первом случае условие будет проверяться до выполнения блока операторов (предусловие), а во втором – после (постусловие).

Если при проверке условия в конструкции стоит ключевое слово While, то блок операторов будет выполняться, пока условие остается истинным, если же стоит Until, то блок операторов будет выполняться, пока условие остается ложным.

Условие не является обязательным. Если его нет, то по умолчанию оно трактуется, как False.

Необязательный оператор Exit Do аналогичен оператору Exit Forв цикле For…Next. Он также прекращает выполнение цикла и передает управление на оператор, следующий непосредственно за Loop.

WhileWend

Данный оператор является частным случаем оператора Do…Loop.

While условие

БлокОператоров

Wend

БлокОператоров выполняется пока условие истинно.

For EachNext (циклы по структуре данных)

В этом операторе тело цикла выполняется для каждого элемента в массиве.

For Each элемент In группа

[блокОператоров1]

[Exit For]

[блокОператоров2]

Next [элемент]

Здесь элемент – это переменная, пробегающая в качестве значений элементы массива. Элемент обязан быть переменной типа Variant.