Справочник от Автор24
Найди эксперта для помощи в учебе
Найти эксперта
+2

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

В VBA существуют два основных типа циклов – циклы со счетчиком (параметрические) и циклы с условием (итерационные).

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

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

Определение 1

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

Для организации циклов в VBA, т. е. многократного выполнения одного или нескольких операторов, используются:

  • циклы с перечислением For...Next;
  • циклы с условием Do... Loop.

Существуют две разновидности For...Next:

  • For…Next;
  • For Each…Next.

Существуют два вида циклов Do...Loop, которые различаются типом проверяемого условия:

  • Do While...Loop;
  • Do Until ...Loop.

Цикл For…Next

Самым распространенным циклом в VBA является цикл с перечислением For…Next. Этому циклу необходимо задать границы (начальное и конечное значения счетчика) в пределах которых будет изменяться переменная цикла.

Оператор цикла имеет следующий синтаксис:

For счетчик = Начальное Значение (например, Например, For $n = 1$)

То Конечное Значение (То 10)

Step Приращение (Step 2)

[Инструкции] или [блок Операторов]

Next [счетчик]

Замечание 1

Здесь переменная - это счетчик, значение переменной увеличивается или уменьшается с каждым повторением цикла. Если в конструкции цикла отсутствует Step, то приращение равно 1 (по умолчанию).

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

  • в случае если значение счётчика меньше конечного значения, то выполняется выход из цикла;
  • в случае если значение счётчика больше конечного значения или равно ему, то выполняются операторы цикла и счётчик уменьшается на значение приращения.
«Операторы циклов» 👇
Помощь эксперта по теме работы
Найти эксперта
Решение задач от ИИ за 2 минуты
Решить задачу
Найди решение своей задачи среди 1 000 000 ответов
Найти
Пример 1

Необходимо вычислить значение функции$ у=sin(x)$ при $x=2,4,6,8,10$ и вывести на экран.

Решение:

$Dim \ x \ As \ Integer, y \ As \ Single$

$For \ x = 2 \ To \ 10 \ Step \ 2$

$y = Sin(x)$

$MsgBox \ Str(y)$

$Next \ x$

Для досрочного выхода из оператора цикла, т.е. до достижения счетчиком конечного значения, в конструкцию цикла нужно ввести оператор Exit For.

С учетом Exit For оператор цикла имеет следующий синтаксис:

$For \ счетчик = Начальное \ Значение$ (например, Например, $For \ n = 1$)

То Конечное Значение (То 10)

Step Приращение (Step 2)

[Инструкции] или [блок Операторов]

Exit For

Next [счетчик]

Цикл For Each … Next

Этот цикл похож на предыдущий, но в нём блок операторов повторяется не указанное число раз, а для каждого элемента массива или для каждого объекта семейства.

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

Оператор цикла имеет следующий синтаксис:

For Each элемент In группа Операторы Next [элемент]

Определение 2

Группа - это имя семейства объектов или массива. Важно заметить, что для семейства объектов элемент - это переменная, представляющая объект-член семейства. Перебор элементов выполняется быстрее, так как запоминается номер позиции элемента.

Следует помнить следующие ограничения при использовании цикла For Each . . . Next:

  • для наборов параметр элемент может быть только переменной типа variant, общей переменной типа object или объектом, перечисленным в Object Browser;
  • для массивов параметр элемент может быть только переменной типа Variant;
  • нельзя использовать цикл For Each...Next с массивом, имеющим определенный пользователем тип, так как переменная типа variant не может содержать значение определенного пользователем типа.

Для обработки группы однородных объектов или массивов применяется следующая конструкция цикла:

For Each Элемент In Группа (имя группы однородных объектов)

[Инструкции] или [блок Операторов]

Exit For

Next элемент

Цикл с условием Do While...Loop

Определение 3

Цикл Do While … Loop – типичный цикл с предусловием. Выполняя этот цикл, VBA сначала проверяет условие. Если условие ложно (False), он пропускает все операторы цикла. Если оно истинно (True), VBA выполняет операторы цикла, снова возвращается к оператору Do While и снова проверяет условие.

Следовательно, цикл, представленный данной конструкцией, может выполняться любое число раз, пока значением условия является не нуль или True (Истина). Отметим, что операторы тела цикла не выполняются ни разу, если при первой проверке условия оно оказывается ложным (False).

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

Пример 2

Do While условие (Например, $x

[Инструкции] или [блок Операторов]

Exit Do

Loop

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

Do

[Инструкции] или [блок Операторов]

Exit Do

Loop While условие

В конструкции Do … While для увеличения шага следует писать специальный оператор, т.к. в ней в отличие от конструкции For, не делается это автоматически.

Цикл с условием Do Until…Loop

Оператор Do Until…Loop выполняет циклы до тех пор, пока условие не соблюдается, а при соблюдении условия оператор выходит из цикла. Условие проверяется до того, как выполняется инструкция или группа операторов.

В этом случае синтаксис операторов цикла Do Until...Loop имеет следующий вид:

Пример 3

Do Until условие (Например, x=20)

[Инструкции] или [блок Операторов]

Exit Do

Loop

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

Do

[Инструкции] или [блок Операторов]

Exit Do

Loop Until условие

Дата написания статьи: 06.05.2017
Найди решение своей задачи среди 1 000 000 ответов
Крупнейшая русскоязычная библиотека студенческих решенных задач
Все самое важное и интересное в Telegram

Все сервисы Справочника в твоем телефоне! Просто напиши Боту, что ты ищешь и он быстро найдет нужную статью, лекцию или пособие для тебя!

Перейти в Telegram Bot