Управляющая инструкция For-Each-Next 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Управляющая инструкция For-Each-Next



Сейчас мы расскажем о, вероятно, самом мощном цикле VBA — For- Each- Next. Аналогичные структуры в других языках программирования встречаются очень редко. Инструкция For- Each- Next предназначена для выполнения одной и той же группы действий над каждым объектом семейства или элементом массива. Ниже приведен, простой пример этой инструкции:

Option Base 1

Sub ForEachNext()

Dim Студенты(5) As String

Dim Студент      As Variant

Студенты(1) = "Абрикосов"

Студенты(2) = "Богданов"

Студенты(3) = "Кузнецова"

Студенты(4) = "Милютин"

Студенты(5) ="Романова"

For Each Студент In Студенты

MsgBox Студент

Next

End Sub

В ForEachNext элементы массива Студенты заполняются фамилиями студентов, которые затем по очереди выводятся на экран в структуре For - Each - Next.

Обратите внимание, что, как и в случае For- Next, инструкции цикла выполняются определенное число раз, однако здесь Вам не придется заботиться об указании этого числа. Оно точно совпадает с количеством элементов массива (или объектов семейства). Этот пример можно переписать с помощью структуры For- Next:

Sub ForNext()

Dim Студенты(5) As String

Dim Count1 As Integer

Студенты(1) = "Абрикосов"

Студенты(2) = "Богданов"

Студенты(3) = "Кузнецова"

Студенты(4) = "Милютин"

Студенты(5) =" Романова "

For Count1 = 1 To UBound(Студенты)

MsgBox Студенты(Countl)

Next

End Sub

Здесь нам пришлось определить переменную-счетчик 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 с многомерными массивами

Разберемся, что происходит при использовании в инструкций 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 Имя

Next

End Sub

Чтобы выполнить ту же операцию средствами 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

End Sub

Представьте себе, какая громоздкая конструкция понадобилась бы, чтобы осуществить те же действия средствами цикла For-Next.



Поделиться:


Последнее изменение этой страницы: 2021-12-15; просмотров: 37; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.147.89.24 (0.007 с.)