Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
44
Добавлен:
16.03.2016
Размер:
30.52 Кб
Скачать

Вопрос 9. Оператор цикла с параметром For. Назначение, правила синтаксиса и механизм выполнения. Коллекции объектов. Доступ к объектам коллекции с использованием For.

Повторяет группу операторов заданное количество раз.

For counter [ As datatype ] = start To end [ Step step ]

[ statements ]

[ Continue For ]

[ statements ]

[ Exit For ]

[ statements ]

Next [ counter ]

Часть

Описание

counter

Требуется в операторе For. Числовая переменная. Управляющая переменная цикла. 

datatype

Необязательный параметр. Тип данных counter

start

Обязательное. Числовое выражение. Начальное значение counter.

end

Обязательное. Числовое выражение. Конечное значение counter.

step

Необязательный параметр. Числовое выражение. Шаг, с которым counter увеличивается при каждом прохождении цикла.

statements

Необязательный параметр. Одно или несколько выражений между For и Next, выполняемых указанное число раз.

Continue For

Необязательный параметр. Передает управление следующей итерации цикла.

Exit For

Необязательный параметр. Передает управление из цикла For.

Next

Обязательное. Завершает определение цикла For.

Структура For... Next используется при необходимости повторения набора инструкций несколько раз.

При начале цикла For...Next Visual Basic оценивает startend и step. Это единственный раз, когда оцениваются эти значения. Затем назначается значение start переменной counter. Перед выполнением блока операторов сравниваютсяcounter и end. Если значение counter превысило значение end (или меньше его при отрицательном значении step), цикл For завершается и управление передается оператору, следующему за оператором Next. В противном случае выполняется блок операторов.

Каждый раз при обнаружении оператора Next Visual Basic увеличивает counter на step и возвращается к оператору For.После этого сравниваются counter и end, и в зависимости от результата происходит либо выполнение блока, либо выход из цикла. Этот процесс продолжается до тех пор, пока counter не превысит end, или не встретится оператор Exit For.

Цикл не останавливается до тех пор, пока counter не превысит end. Если counter равен end, то цикл продолжается.Сравнением, определяющим, следует ли выполнять блок, является counter <= end для положительного step и counter>= end для отрицательного step.

Изменение значения counter внутри тела цикла может осложнить читаемость и отладку кода. Изменение значенийstartend или step не влияет на значения итерации, определенные при первом входе в цикл.

Циклы используются в ситуациях, когда нам нужно выполнить какое-либо

действие несколько раз. Первая ситуация — мы знаем, сколько раз нужно

выполнить определенное действие, в этом случае используется конструкция

For...Next:

For iCounter = 1 to 10

MsgBox "Счетчик: " & iCounter

Next

Чтобы указать, насколько должно прирастать значение счетчика, использует-

ся ключевое слово Step:

For iCounter = 1 to 10 Step 2

MsgBox "Счетчик: " & iCounter

Next

Можно и уменьшать исходное значение счетчика:

For iCounter = 10 to 1 Step -2

MsgBox "Счетчик: " & iCounter

Next

Для безусловного выхода из конструкции For...Next используется команда

Exit For:

VStop = InputBox("Введите значение останова")

VInput = CInt(VStop)

For iCounter = 1 to 10

MsgBox "Счетчик: " & iCounter

If iCounter =VInput Then Exit For

Next

Очень часто в VBA требуется сделать какое-нибудь действие со всеми элементами коллекции или массива — перебрать все открытые документы, все листы Excel, все ячейки в определенном диапазоне и т. п. Для того чтобы пройти циклом по всем элементам коллекции, используется команда

For Each...Next:

For Each oWbk in Workbooks

MsgBox oWbk.Name

Next

При использовании этого приема можно очень просто найти и получить

ссылку на нужный нам объект: (Доступ к объектам коллекции с использованием For)

For Each oWbk in Workbooks

If oWbk.Name = "Сводка.xls" Then

Set oMyWorkBook = oWbk

Exit For

End If

Next

Соседние файлы в папке программирование_1