Содержание
-
Циклы VBA
-
Циклы VBA . Команды организации циклов
Какие либо действия процедуры повторяющиеся заданное количество раз или пока выполняется или не выполняется некоторое условие называют циклом. Процесс выполнения все операторов, заключенных в структуру цикла, один раз называется итерацией цикла.
-
Циклы VBA
Структуры цикла, всегда выполняющиеся заданное количество раз, называются циклами с фиксированным числом итераций. Другие типы структур цикла повторяются переменное количество раз в зависимости от некоторого набора условий. Такие циклы называются неопределенными циклами. Блок операторов, находящийся между началом и концом цикла называется "тело цикла". Самой простой структурой цикла является фиксированный цикл.
-
Цикл For..Next
По умолчанию VBA увеличивает переменную counterна 1 каждый раз при выполнении операторов в цикле. Можно задать другое значение (SterSize- любое численное выражение), на которое будет изменяться counter. Ключевое слово Nextсообщает VBA о том, что достигнут конец цикла. Необязательная переменная counter после ключевого слова Nextдолжна быть той же самой переменной counter, которая была задана после ключевого слова Forв начале структуры цикла.
-
For counter = Start To End [Step StepSize] Statements Next [counter] Counter - любая численная переменная VBA Start - любое численное выражение , определяет начальное значение для переменной counter End - численное выражение, определяет конечное значение для переменной counter Statements - один, несколько или ни одного оператора VBA (тело цикла).
-
При уменьшении счетчика цикла For..Next цикл выполняется, пока переменная счетчика больше или равна конечному значению, а когда счетчик цикла увеличивается, цикл выполняется, пока переменная счетчика меньше или равна конечному значению.
-
Цикл ForEach..Next
Цикл ForEach..Next не использует счетчик цикла. Циклы ForEach..Next выполняются столько раз, сколько имеется элементов в определенной группе, такой как коллекция объектов или массив (которые будут рассматриваться позже). Проще говоря, цикл ForEach..Next выполняется один раз для каждого элемента в группе.
-
For Each Element In Group Statements Next [Element] Element - переменная, используемая для итерации по всем элементам в определенной группе Group - это объект коллекции или массив Statements - один, несколько или ни одного оператора VBA (тело цикла).
-
Цикл ForEach..Next всегда выполняется столько раз, сколько имеется элементов в определенной группе.
-
Циклы тестирующие условия до и после выполнения тела цикла
Существуют два основных способа создания неопределенного цикла. Можно построить цикл так, что VBA будет тестировать некоторое условие (детерминант цикла) либо перед выполнением цикла, либо - после выполнения цикла.
-
Цикл Do .. While
Конструкция цикла, тестирующая свое условие детерминанта до выполнения цикла. Do While Condition Statements Loop Condition - логическое выражение для детерминанта цикла Statements- один, ни одного или несколько операторов, которые составляют тело цикла Loop- ключевое слово, указывает на окончание тела цикла и обозначает место, из которого VBA возвращается в начало цикла для проверки условия
-
VBA выполняет цикл пока логическое выражение, представленное с помощью Condition, равно True. При выполнении цикла DoWhile сначала тестируется логическое выражение (Condition); если оно равно True - выполняется тело цикла. При достижении ключевого слова Loop управление опять передается в начало цикла и снова проверяется логическое выражение. Так происходит до тех пор, пока логическое выражение не станет False. Когда логическое выражение становится False - управление передается оператору, следующему за ключевым словом Loop.
-
Если логическое выражение равно False при первом выполнении цикла DoWhile, то управление сразу передается оператору, следующему за Loop, а операторы, находящиеся в теле цикла соответственно пропускаются. Другими словами говоря, цикл DoWhile позволяет ни разу не выполнять операторы внутри него.
-
Цикл Do .. Until
Еще один цикл, тестирующий условие детерминанта до выполнения цикла. Do Until Condition Statements Loop Condition - логическое выражение для детерминанта цикла Statements - один, ни одного или несколько операторов, которые составляют тело цикла Loop - ключевое слово, указывает на окончание тела цикла и обозначает место, из которого VBA возвращается в начало цикла для проверки условия
-
VBA выполняет цикл пока логическое выражение, представленное с помощью Condition, равно False. В остальном цикл DoUntil полностью аналогичен циклу DoWhile. Для тестирования условий после выполнения тела цикла надо поместить логическое выражение в конец блока операторов, составляющих тело цикла, после ключевого слова Loop, которое сообщает о конце цикла.
-
Цикл Do .. LoopWhile
Конструкция цикла, тестирующая свое условие детерминанта после выполнения цикла. Do Statements Loop While Condition Condition - логическое выражение для детерминанта цикла Statements - один, ни одного или несколько операторов, которые составляют тело цикла Loop - ключевое слово, указывает на окончание тела цикла и обозначает место, из которого VBA возвращается в начало цикла после проверки условия
-
VBA выполняет цикл пока логическое выражение, представленное с помощью Condition, равно True. При выполнении цикла DoLoopWhile сначала выполняются операторы тела цикла, затем по достижении ключевого слова Loop тестируется логическое выражение (Condition); если оно равно True - управление передается в начало тела цикла и цикл повторяется снова. Так происходит до тех пор, пока логическое выражение не станет False. Когда логическое выражение становится False - управление передается оператору, следующему за строкой LoopWhile...
-
Даже если при первом выполнении цикла DoLoopWhile логическое выражение равно False тело цикла всё равно будет выполнено. Другими словами говоря, независимо от значения логического выражения, представленного с помощью Condition, этот цикл всегда выполняется, по крайней мере, один раз.
-
Цикл Do .. LoopUntil
Еще один цикл, тестирующий условие детерминанта после выполнения цикла. Do Statements Loop Until Condition Condition - логическое выражение для детерминанта цикла Statements - один, ни одного или несколько операторов, которые составляют тело цикла Loop - ключевое слово, указывает на окончание тела цикла и обозначает место, из которого VBA возвращается в начало цикла после проверки условия
-
VBA выполняет цикл пока логическое выражение, представленное с помощью Condition, равно False. В остальном цикл DoLoopUntil полностью аналогичен циклу DoLoopWhile.
-
Вложенные циклы
Циклы можно помещать внутрь друг друга. Помещение одной структуры цикла в другую называется вложением циклов. Можно делать вложение структур циклов разного типа. При вложении циклов надо соблюдать определенные правила: При вложении циклов For..Next каждый цикл должен иметь свою уникальную переменную счетчика; При вложении циклов For Each..Next каждый цикл должен иметь свою уникальную element-переменную;
-
Если используется оператор Exit For или Exit Do во вложенном цикле, этим оператором заканчивается только выполняемый в данный момент цикл. VBA продолжаетвыполнениеследующегоциклаболеевысокогоуровня.
-
Прерывание выполнения макроса или процедуры
Зачастую программисты допускают ошибки в написании кода, которые приводят к зацикливанию программы (бесконечный цикл). Для прерывания выполнения VBA необходимо нажать клавишу Esc или комбинацию клавиш Ctrl+Break. VBA заканчивает выполнение текущего оператора, переходит в состояние ожидания и отображает окно сообщения о runtime-ошибке.
-
Спасибо за внимание!
Нет комментариев для данной презентации
Помогите другим пользователям — будьте первым, кто поделится своим мнением об этой презентации.