Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь КАТЕГОРИИ: АрхеологияБиология Генетика География Информатика История Логика Маркетинг Математика Менеджмент Механика Педагогика Религия Социология Технологии Физика Философия Финансы Химия Экология ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Управляющая инструкция 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; просмотров: 38; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.119.138.123 (0.006 с.) |