End Sub
Next
Инструкция For-Each-Next с многомерными массивами
End Sub
Next
Здесь нам пришлось определить переменную-счетчик Count1, чтобы организовать цикл и перебрать все элементы массива по номеру. Структура For-Each-Next избавляет нас от этой необходимости. Рассмотрим подробнее ее элементы, использованные в процедуре ForEachNext.
For Each Ключевые слова, отмечающие начало инструкции For-Each-Next
Студент Переменная, которой присваиваются значения элементов группы — массива или семейства объекта. В первом случае переменная должна относиться к типу Variant. Во втором случае Вы можете определить ее как Variant, Object или приписать ей конкретный объектный тип, соответствующий объектам семейства
In Ключевое слово, отделяющее переменную от группы
Студенты Группа, то есть массив или семейство объектов. Количество повторений цикла совпадает с числом элементов в группе. Переменной цикла при первом выполнении присваивается значение первого элемента группы, затем — всех последующих элементов
|
|
MsgBox Студент Действие, которое выполняется над элементом группы
Next Ключевое слово, отмечающее конец инструкции. Достигнув его, программа возвращается к началу цикла — инструкции For Each. Если значение переменной цикла совпадет с последним элементом группы, выполнится инструкция, написанная сразу после Next
Замечание:
В инструкции For-Each-Next значения элементов массива можно использовать, но нельзя изменять. На объекты семейств это ограничение не распространяется — изменение их свойств в инструкции For-Each допустимо.
Разберемся, что происходит при использовании в инструкций For-Each-Next двухмерного массива. Обратите внимание, что доступ ко всем элементам массива не зависит от его размерности.
Sub ForEachNext_2DArray()
Dim Студенты(2, 2) As String
Dim Имя As Variant
Студенты (1,1) = "Иван"
Студенты (1,2) = "Мария"
Студенты (2,1) = "Петр"
Студенты (2,2) = "Галина",
For Each Имя In Студенты
MsgBox Имя
Чтобы выполнить ту же операцию средствами For-Next, нам пришлось бы создать два цикла — один внутри другого.
Программа ForEachNext_6DArray обращается к каждому элементу шестимерного массива, на каждом шаге увеличивая значение счетчика:
Sub ForEachNext_6DArray()
Dim Массив(5, 5, 5, 5, 5, 5) As Boolean
Dim Var1 As Variant
Dim Var2 As Integer
Var2 = 0
For Each Var1 In Массив
Var2 = Var2 + 1 Next
MsgBox Var2
Представьте себе, какая громоздкая конструкция понадобилась бы, чтобы осуществить те же действия средствами цикла For-Next.