Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Управляющие конструкции.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
92.67 Кб
Скачать

Управляющие конструкции

Для организации ветвлений в VBA имеются операторы краткого и полного ветвления If и оператор выбора Select Case.

Краткая форма оператора ветвления If может иметь как однострочную, так и блочную форму. В одну строку краткая форма If может быть записана так:

If условие Then оператор

В блочной форме краткое ветвление выглядит следующим образом:

If условие Then

оператор1

оператор2

...

End If

В качестве условия можно использовать логическое выражение, возвращающее

значение True (ИСТИНА) или False (ЛОЖЬ), или любое арифметическое

выражение.

Если используется арифметическое выражение, то нулевое

значение этого выражения эквивалентно логическому значению False, а

любое ненулевое выражение эквивалентно True. В том случае, когда условие

возвращает значение False, операторы, составляющие тело краткого

оператора ветвления, не будут выполняться.

В тех случаях, когда значению условия False должно соответствовать

выполнение каких-либо других действий, а не просто пропуск оператора или

группы операторов, используется полная форма оператора ветвления, всегда

имеющая блочную форму записи:

If условие Then

группаОператоров_1

Else

группаОператоров_2

End If

Если условие истинно, выполняется первая группа операторов, а в противном

случае — вторая группа.

Совет

Для того чтобы текст вашей процедуры выглядел понятным и удобным для

восприятия, рекомендуется делать отступы для групп операторов так, как

это указано при описании их синтаксиса. В VBA предусмотрено удобное

средство изменения отступов — нажатие на клавишу <Tab> увеличивает

отступ вправо, нажатие комбинации клавиш <Shift>+<Tab> уменьшает этот

отступ.

Осуществить выбор одного из целой группы альтернативных действий можно

путем использования для этого вложенных операторов ветвления

If ... Then ... Else, однако если выбор одной из возможностей должен

быть основан на различных значениях одного и того же выражения, гораздо

удобнее использовать специальный оператор выбора Select Case, имеющий

следующий синтаксис:

Select Case проверяемоеВыражение

Case списокЗначений_1

группаОператоров_1

Case списокЗначений_2

группаОператоров_2

Case списокЗначений_3

группаОператоров_3

...

Case Else

группаОператоров_Else

End Select

Проверяемое выражение вычисляется в начале работы оператора Select

Case. Это выражение может возвращать значение любого типа, например,

логическое, числовое или строковое.

Список выражений представляет собой одно или несколько выражений,

разделенных запятой. При выполнении оператора проверяется, соответствует

ли хотя бы один из элементов этого списка проверяемому выражению. Эти

элементы списка выражений могут иметь одну из следующих форм:

выражение - в этом случае проверяется, совпадает ли значение проверяемого выражения с этим выражением;

выражение1 To выражение2 в этом случае проверяется, находится ли значение проверяемого выражения в

указанном диапазоне значений;

Is логическийОператор выражение

в этом случае проверяемое выражение сравнивается с указанным значением с

помощью заданного логического оператора; например, условие Is >= 10

считается выполненным, если проверяемое значение не меньше 10.

Если хотя бы один из элементов списка соответствует проверяемому

выражению, то выполняется соответствующая группа операторов, и на этом

выполнение оператора Select Case заканчивается, а остальные списки

выражений не проверяются, т. е. отыскивается только первый подходящий

элемент списков выражений. Если же ни один из элементов всех этих списков

не соответствует значению проверяемого выражения, выполняются операторы

группы Else, если таковая присутствует.

В VBA имеется богатый выбор средств организации циклов, которые можно

разделить на две основные группы — циклы Do ... Loop и циклы For ...

Next.

Циклы типа Do ... Loop используются в тех случаях, когда заранее

неизвестно, сколько раз должно быть повторено выполнение расположенной в

теле цикла группы операторов. Такой цикл продолжает свою работу до тех пор,

пока не будет выполнено определенное условие. Существуют четыре типа

операторов цикла Do ... Loop, которые определяются типом проверяемого

условия и местом его расположения.

Вот синтаксис этих четырех конструкций:

Do While условие

ГруппаОператоров

Loop

Условие проверяется до того, как выполняется группа

операторов, образующих тело цикла. Цикл продолжает

свою работу, пока это условие остается истинным (т. е.

имеет значение True), иными словами, это условие

продолжения работы цикла.

Do

ГруппаОператоров

Loop While условие

Условие проверяется после того, как операторы,

составляющие тело цикла, будут выполнены хотя бы

один раз. Цикл продолжает свою работу, пока это

условие остается истинным (т. е. имеет значение True),

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

Do Until условие

ГруппаОператоров

Loop

Условие проверяется до того, как выполняется группа

операторов, образующих тело цикла. Цикл продолжает

свою работу до тех пор, пока это условие не станет

истинным (т. е. не примет значение True), иными

словами, это условие прекращения работы цикла.

Do

ГруппаОператоров

Loop Until условие

Условие проверяется после того, как операторы,

составляющие тело цикла, будут выполнены хотя бы

один раз. Цикл продолжает свою работу до тех пор, пока

это условие не станет истинным (т. е. не примет

значение True), иными словами, это условие

прекращения работы цикла.

Имеется также две разновидности оператора цикла For...Next. Наиболее

часто используется следующая конструкция:

For счетчик = начЗнач To конЗнач [Step приращение]

группаОператоров

Next [счетчик]

Важно отметить, что:

"приращение" — может быть как положительным, так и отрицательным

числом. Если использовать отрицательное приращение, то конечное

значение должно быть меньше либо равно начальному значению для того,

чтобы тело цикла выполнилось хотя бы один раз.

После завершения работы цикла For...Next переменная, которая

использовалась в качестве счетчика, получает значение, обязательно

превосходящее конечное значение в том случае, если приращение

положительно, и строго меньшее конечного значения, если приращение

отрицательно.

Если начальное и конечное значения совпадают, тело цикла выполняется лишь

один раз.

Есть еще одна разновидность цикла For...Next, часто использующаяся в