
Лаб. раб. VBA / операторы цикла
.docОператоры цикла
В VBA существуют два основных типа циклов – циклы со счетчиком (параметрические) и циклы с условием (итерационные).
Циклы со счетчиком используют в тех случаях, когда необходимо выполнить некоторые действия определенное число раз
Циклы с условием применяются тогда, когда некоторые действия в программе должны повторяться до тех пор, пока выполняется определенное условие.
Циклы с параметром For … Next
Структура цикла:
For Параметр_Цикла = Начальное_Значение To Конечное_Значение
[Step Шаг]
Операторы
[Exit For]
Next [Параметр_Цикла]
где For – ключевое слово VBA (от), обозначающее начало цикла;
Параметр_цикла – переменная, определенная в качестве счетчика цикла;
Начальное_Значение – число, задающее начальное значение параметра цикла;
To – ключевое слово VBA (до), разделяющее
Начальное_значение и Конечное_Знаение;
Конечное_Значение – число, задающее значение параметра цикла,
при котором цикл завершается;
Step – ключевое слово VBA (шаг), используемое для
задания шага цикла, необязательный аргумент;
Шаг – число, задающее шаг цикла, т.е. значение, на которое
увеличивается (или уменьшается) значение параметра
цикла на каждом шаге. Это число может быть
отрицательным;
Exit For – оператор досрочного выхода из цикла (необязательный);
Next – ключевое слово VBA (следующий), обозначающее
конец цикла.
Работа цикла:
Шаг 1 Сначала определяется параметр цикла, а также вычисляются и запоминаются начальное и конечное значения этой переменной.
Шаг 2 Параметру цикла присваивается начальное значение.
Шаг 3 Начальное значение параметра цикла сравнивается с конечным значением.
Если параметр цикла больше конечного значения, программа сразу выходит из цикла и переходит к той строке кода, которая следует за циклом.
Шаг 4 Выполняется тело цикла.
Шаг 5 После выполнения тела цикла происходит присваивание параметру цикла следующего значения. Переход к шагу 3.
Примечание.
1. Если используется ключевое слово Step, то параметр цикла изменяется в соответствии с числом, указанным после этого слова. Если слово Step отсутствует, то значение шага равно единице.
Пример 1.
For I = 0 To 10 Step 2 (Значение I будет увеличиваться на 2)
2. Цикл For … Next может быть прерван досрочно при достижении какого либо условия. Для этого в нужном месте цикла нужно поместить оператор Exit For.
Пример 2.
Dim S As Integer
Dim j As Integer
S = 2
For j = 1 To 10
S = S + j
If S > 6 Then
Exit For (Выход из цикла, если значение S > 6)
End If
Next j
MsgBox (S)
Циклы с условием (итерационные)
Если какое-то действие (несколько действий) необходимо выполнить много раз, но заранее неизвестно сколько раз и это зависит от какого-то условия, то тогда следует воспользоваться циклом с предусловием или с постусловием.
В VBA есть два основных цикла DO … LOOP – с условием, вводимым ключевым словом While, и с условием, вводимым ключевым словом Until. Оба они могут быть с предусловием или с постусловием.
Синтаксис:
Цикл с предусловием |
Цикл с постусловием |
Do While | Until <условие> <Тело цикла> Loop |
Do <Тело цикла> Loop While | Until <условие> |
где Do – ключевое слово (делать);
While – ключевое слово (пока);
Until – ключевое слово (до тех пор пока);
Loop – ключевое слово, указывающее на окончание цикла;
<условие> – логическое выражение, истинность которого проверяется
в начале каждого выполнения тела цикла;
<тело_цикла> – произвольная последовательность операторов;
Конструкция Do … While читается: делать пока выполняется условие. В конструкции Do … While для увеличения шага следует писать специальный оператор, т.к. в ней в отличие от конструкции For, не делается это автоматически.
Конструкция Do … Until читается: делать до тех пор, пока не будет выполнено условие. В конструкции Do … Until для увеличения шага следует писать специальный оператор, т.к. в ней в отличие от конструкции For, не делается это автоматически.
Условие, записанное после ключевого слова Until, проверяется в конце каждой итерации (после выполнения тела цикла). Обратить внимание, что оно работает здесь не совсем так, как в цикле While. Если условие является истинным (True), то выполнение цикла завершается. Если условие не выполняется (является ложным – False), то вновь выполняется тело цикла.
Пример 1.
Постановка
задачи. Вычислить
сумму конечного ряда
с
помощью подпрограммы-процедуры.
Технология выполнения задания:
1. Исходные данные: i Z
Результат: S R.
2.Набрать в стандартном модуле проекта следующую пользовательскую процедуру, используя цикл с предусловием While:
Sub summa()
Dim S As Integer
Dim i As Integer
S = 0
i = 1
Do While i <= 10
S = S + i ^ 2
i = i + 1
Loop
MsgBox (S)
End Sub
3.Набрать в стандартном модуле проекта следующую пользовательскую процедуру, используя цикл с предусловием Until:
Sub summa()
Dim S As Integer
Dim i As Integer
S = 0
i = 1
Do Until i > 10
S = S + i ^ 2
i = i + 1
Loop
MsgBox (S)
End Sub
4 Набрать в стандартном модуле проекта следующую пользовательскую процедуру, используя цикл с постусловием While:
Sub summa()
Dim S As Integer
Dim i As Integer
S = 0
i = 1
Do
S = S + i ^ 2
i = i + 1
Loop While i <= 10
MsgBox (S)
End Sub
5 Набрать в стандартном модуле проекта следующую пользовательскую процедуру, используя цикл с постусловием Until:
Sub summa()
Dim S As Integer
Dim i As Integer
S = 0
i = 1
Do
S = S + i ^ 2
i = i + 1
Loop Until i > 10
MsgBox (S)
End Sub