Шаг 21 - Инструкция For Each...Next

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

For Each элемент In группа
[инструкции]
[Exit For]
[инструкции]
Next [элемент]

Параметры
элемент
Обязательный. Переменная, используемая для выполнения итераций по элементам семейства или массива. Для семейств элемент может быть только переменной типа Variant, универсальной объектной переменной или переменной, представляющей любой конкретный объект. Для массивов элемент может быть только переменной типа Variant.
группа
Обязательный. Имя семейства объектов или массива (за исключением массивов с определяемыми пользователем типами).
инструкции
Необязательный. Одна или несколько инструкций, которые выполняются над каждым элементом группы.

Замечания
Вход в блок For...Each выполняется только в том случае, если группа содержит хотя бы один элемент. После входа в цикл все инструкции цикла выполняются для первого элемента группы. Затем, если группа содержит другие элементы, инструкции цикла выполняются для каждого элемента. После обработки всех элементов цикл завершается, а выполнение продолжается с инструкции, следующей за инструкцией Next.
В любых местах цикла может размещаться любое число инструкций Exit For, позволяющих выйти из цикла. Инструкция Exit For часто применяется вместе с проверкой некоторого условия (например, If…Then). Она передает управление инструкции, непосредственно следующей за инструкцией Next.
Допускается организация вложенных циклов For...Each...Next (один цикл For...Each...Next располагается внутри другого). Однако каждый элемент цикла должен быть уникальным.
Если опустить элемент в инструкции Next, выполнение продолжается так же, как если бы элемент был указан. При обнаружении инструкции Next до соответствующей инструкции For возникает ошибка.
Не допускается использование инструкции For...Each...Next с массивами, определяемых пользователями типов, поскольку значение типа Variant не может содержать тип, определяемый пользователем.

Пример
В данном примере инструкция For Each...Next просматривает свойство Text каждого элемента семейства, чтобы найти строку "Привет". В данном примере MyObject - объект, который имеет свойство Text и является элементом семейства MyCollection. Оба имени используются исключительно в иллюстративных целях.

Dim Found, MyObject, MyCollection
Found = False					' Инициализирует переменную.
For Each MyObject In MyCollection			' Просматривает каждый элемент. 
	If MyObject.Text = "Привет" Then		' Если Text содержит "Привет",
		Found = True			' Присваивает значение True.
		Exit For				' Завершает цикл.
	End If
Next

Предыдущий Шаг | Следующий Шаг | Оглавление
Автор Каев Артем.