Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
VBA_lektsii.doc
Скачиваний:
8
Добавлен:
01.04.2025
Размер:
3.91 Mб
Скачать

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

Она позволяет выполнять несколько команд заданное число раз. Рассмотрим следующий при­мер: в нем число, записанное в переменную Base, возводится в степень, содер­жащуюся в переменной Power.

Sub ForNext()

Dim Base As Integer

Dim Power As Integer

Dim Result As Integer

Dim Count1 As Integer

Base = 4

Power = 5

Result =1

For Count = 1 To Power Step 1

Result = Result * Base

Next

MsgBox Base & " в степени " & Power & " = " _

& Result

End Sub

В этой программе с помощью цикла For-Next 4 возводится в пятую степень. Надо отметить, что в VBA есть оператор возведения в степень ^, поэтому для подобного расчета достаточно написать

Num2 = 4 ^ 5

Мы решили использовать цикл For-Next для возведения в степень исключительно в учебных целях. В программе ForNext для вычислений используются четыре целые временные: Base, равная 4, Power, равная 5, Result, предназначенная для хранения результата, и Countl – счетчик цикла. Рассмотрим отдельные элементы инструкции For-Next.

Элемент

Описание

For

Ключевое слово, отмечающее начало инструкции For-Next

Count = 1 То Power

Выражение, определяющее счетчик и его начальное и конечное значения, задающие число повторений цикла. В данном случае в качестве счетчика используется переменная Count. Ключевое слово То разделяет начальное (1) и конечное (Power) значения счетчика. При первом обращении к циклу переменной Count присваивается значение 1, и начинается выполнение цикла

Step 1

Ключевое слово, задающее шаг приращения счетчика при завершении очередного цикла. Чаще всего в циклах For-Next он равен 1, но может быть любым целым числом, в том числе и отрицательным (тогда значение счетчика в каждом цикле уменьшается). В начале очередного цикла значение счетчика сравнивается с его конечным значением. Если разница положительная (значение счетчика превосходит его конечное значение), управление передается инструкции, заданной после ключевого слова Next. To же самое происходит и при отрицательной разнице. Указание ключевого слова Step и величины шага не является обязательным. Если они не определены, VBA выполняет цикл с шагом 1

Result = Result * Base

Тело цикла. Может состоять из нескольких инструкций

Next

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

8.4. Управляющая инструкция 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 допустимо.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]