Слайд 2
Циклы VBA . Команды организации циклов
Какие
либо действия процедуры повторяющиеся заданное количество раз или пока
выполняется или не выполняется некоторое условие называют циклом.
Процесс выполнения все операторов, заключенных в структуру цикла, один раз называется итерацией цикла.
Слайд 3
Циклы VBA
Структуры цикла, всегда выполняющиеся заданное количество
раз, называются циклами с фиксированным числом итераций. Другие типы
структур цикла повторяются переменное количество раз в зависимости от некоторого набора условий. Такие циклы называются неопределенными циклами.
Блок операторов, находящийся между началом и концом цикла называется "тело цикла".
Самой простой структурой цикла является фиксированный цикл.
Слайд 4
Цикл For..Next
По умолчанию VBA увеличивает переменную counter на
1 каждый раз при выполнении операторов в цикле. Можно
задать другое значение (SterSize - любое численное выражение), на которое будет изменяться counter.
Ключевое слово Next сообщает VBA о том, что достигнут конец цикла. Необязательная переменная counter после ключевого слова Next должна быть той же самой переменной counter, которая была задана после ключевого слова For в начале структуры цикла.
Слайд 5
Цикл For..Next
For counter = Start To End
[Step StepSize]
Statements
Next [counter]
Counter - любая численная
переменная VBA
Start - любое численное выражение , определяет начальное значение для переменной counter
End - численное выражение, определяет конечное значение для переменной counter
Statements - один, несколько или ни одного оператора VBA (тело цикла).
Слайд 6
Цикл For..Next
При уменьшении счетчика цикла For..Next
цикл выполняется, пока переменная счетчика больше или равна конечному
значению, а когда счетчик цикла увеличивается, цикл выполняется, пока переменная счетчика меньше или равна конечному значению.
Слайд 7
Цикл For Each..Next
Цикл For Each..Next не
использует счетчик цикла. Циклы For Each..Next выполняются столько раз,
сколько имеется элементов в определенной группе, такой как коллекция объектов или массив (которые будут рассматриваться позже). Проще говоря, цикл For Each..Next выполняется один раз для каждого элемента в группе.
Слайд 8
Цикл For Each..Next
For Each Element In
Group
Statements
Next [Element]
Element - переменная,
используемая для итерации по всем элементам в определенной группе
Group - это объект коллекции или массив
Statements - один, несколько или ни одного оператора VBA (тело цикла).
Слайд 9
Цикл For Each..Next
Цикл For Each..Next всегда
выполняется столько раз, сколько имеется элементов в определенной группе.
Слайд 10
Циклы тестирующие условия до и после выполнения тела
цикла
Существуют два основных способа создания неопределенного цикла.
Можно построить цикл так, что VBA будет тестировать некоторое условие (детерминант цикла) либо перед выполнением цикла, либо - после выполнения цикла.
Слайд 11
Цикл Do .. While
Конструкция цикла, тестирующая
свое условие детерминанта до выполнения цикла.
Do While
Condition
Statements
Loop
Condition - логическое выражение для детерминанта цикла
Statements - один, ни одного или несколько операторов, которые составляют тело цикла
Loop - ключевое слово, указывает на окончание тела цикла и обозначает место, из которого VBA возвращается в начало цикла для проверки условия
Слайд 12
Цикл Do .. While
VBA выполняет цикл пока логическое
выражение, представленное с помощью Condition, равно True.
При выполнении цикла
Do While сначала тестируется логическое выражение (Condition); если оно равно True - выполняется тело цикла. При достижении ключевого слова Loop управление опять передается в начало цикла и снова проверяется логическое выражение. Так происходит до тех пор, пока логическое выражение не станет False. Когда логическое выражение становится False - управление передается оператору, следующему за ключевым словом Loop.
Слайд 13
Цикл Do .. While
Если логическое выражение
равно False при первом выполнении цикла Do While, то
управление сразу передается оператору, следующему за Loop, а операторы, находящиеся в теле цикла соответственно пропускаются. Другими словами говоря, цикл Do While позволяет ни разу не выполнять операторы внутри него.
Слайд 14
Цикл Do .. Until
Еще один цикл,
тестирующий условие детерминанта до выполнения цикла.
Do Until
Condition
Statements
Loop
Condition - логическое выражение для детерминанта цикла
Statements - один, ни одного или несколько операторов, которые составляют тело цикла
Loop - ключевое слово, указывает на окончание тела цикла и обозначает место, из которого VBA возвращается в начало цикла для проверки условия
Слайд 15
Цикл Do .. Until
VBA выполняет цикл пока логическое
выражение, представленное с помощью Condition, равно False.
В остальном цикл
Do Until полностью аналогичен циклу Do While.
Для тестирования условий после выполнения тела цикла надо поместить логическое выражение в конец блока операторов, составляющих тело цикла, после ключевого слова Loop, которое сообщает о конце цикла.
Слайд 16
Цикл Do .. Loop While
Конструкция цикла,
тестирующая свое условие детерминанта после выполнения цикла.
Do
Statements
Loop While Condition
Condition - логическое выражение для детерминанта цикла
Statements - один, ни одного или несколько операторов, которые составляют тело цикла
Loop - ключевое слово, указывает на окончание тела цикла и обозначает место, из которого VBA возвращается в начало цикла после проверки условия
Слайд 17
Цикл Do .. Loop While
VBA выполняет цикл пока
логическое выражение, представленное с помощью Condition, равно True.
При выполнении
цикла Do Loop While сначала выполняются операторы тела цикла, затем по достижении ключевого слова Loop тестируется логическое выражение (Condition); если оно равно True - управление передается в начало тела цикла и цикл повторяется снова. Так происходит до тех пор, пока логическое выражение не станет False. Когда логическое выражение становится False - управление передается оператору, следующему за строкой Loop While...
Слайд 18
Цикл Do .. Loop While
Даже если
при первом выполнении цикла Do Loop While логическое выражение
равно False тело цикла всё равно будет выполнено. Другими словами говоря, независимо от значения логического выражения, представленного с помощью Condition, этот цикл всегда выполняется, по крайней мере, один раз.
Слайд 19
Цикл Do .. Loop Until
Еще один
цикл, тестирующий условие детерминанта после выполнения цикла.
Do
Statements
Loop Until Condition
Condition - логическое выражение для детерминанта цикла
Statements - один, ни одного или несколько операторов, которые составляют тело цикла
Loop - ключевое слово, указывает на окончание тела цикла и обозначает место, из которого VBA возвращается в начало цикла после проверки условия
Слайд 20
Цикл Do .. Loop Until
VBA выполняет цикл пока
логическое выражение, представленное с помощью Condition, равно False.
В остальном
цикл Do Loop Until полностью аналогичен циклу Do Loop While.
Слайд 21
Вложенные циклы
Циклы можно помещать внутрь друг друга. Помещение
одной структуры цикла в другую называется вложением циклов. Можно
делать вложение структур циклов разного типа.
При вложении циклов надо соблюдать определенные правила:
При вложении циклов For..Next каждый цикл должен иметь свою уникальную переменную счетчика;
При вложении циклов For Each..Next каждый цикл должен иметь свою уникальную element-переменную;
Слайд 22
Вложенные циклы
Если используется оператор Exit For или Exit
Do во вложенном цикле, этим оператором заканчивается только выполняемый
в данный момент цикл. VBA продолжает выполнение следующего цикла более высокого уровня.
Слайд 23
Прерывание выполнения макроса или процедуры
Зачастую программисты
допускают ошибки в написании кода, которые приводят к зацикливанию
программы (бесконечный цикл). Для прерывания выполнения VBA необходимо нажать клавишу Esc или комбинацию клавиш Ctrl+Break. VBA заканчивает выполнение текущего оператора, переходит в состояние ожидания и отображает окно сообщения о runtime-ошибке.