Циклы осуществляют повторение инструкций несколько раз, и могут сэкономить много времени.
Следующий код вставляет последовательность чисел в каждую ячейку колонки A (от 1 до 12):
Sub while_loop() Cells(1, 1) = 1 Cells(2, 1) = 2 Cells(3, 1) = 3 Cells(4, 1) = 4 Cells(5, 1) = 5 Cells(6, 1) = 6 Cells(7, 1) = 7 Cells(8, 1) = 8 Cells(9, 1) = 9 Cells(10, 1) = 10 Cells(11, 1) = 11 Cells(12, 1) = 12 End Sub
Этот код очень повторяющийся...
Представьте, если бы мы должны были вставлять последовательные числа в сотни ячеек вместо только 12... Теперь вы понимаете почему циклы являются очень полезными.
Приведем пример пустого цикла While:
Sub while_loop() While [условие] 'Инструкции Wend End Sub
Пока условие будет действительным, инструкции в цикле будут продолжать выполняться (но будьте осторожны, чтобы не сделать бесконечный цикл).
Ниже есть повторяющийся макрос, который был рассмотрен сначала, преобразован в While цикл:
Sub while_loop () Dim num As Integer num = 1 'Начальное число (в данном случае, это номер строки и значение, которое проставляется) While num <= 12 'Пока переменная num будет <= 12, инструкции будут выполняться Cells (num, 1) = num 'Нумерация num = num + 1 'Число увеличивается на 1 при каждом проходе цикла Wend End Sub
Используя этот цикл в макросе, все чтобы мы должны были бы сделать, если бы нам надо было 400 строк вместо 12, это заменить 12 на 400.
Другой способ написать цикл, который работает так же, как While Wend (выполняется так долго, пока действительно определенное условие, содержащееся в While команде):
Sub do_while_loop() Do While [условие] 'Инструкции Loop End Sub
В следующем варианте показано, что условие может быть прописано в конце цикла Do Loop , что означает, что инструкции будут точно выполнены по меньшей мере один раз:
Sub do_while_loop() Do 'Инструкции Loop While [условие] End Sub
Вместо того, чтобы повторять цикл пока выполняется условие, можно выйти из цикла по условию, если мы заменим While на Until:
Sub do_while_loop() Do Until [условие] 'Инструкции Loop End Sub
Sub for_loop() For i = 1 To 5 'Инструкции Next End Sub
Цикл For будет повторяться здесь 5 раз.
При каждом повторении этого цикла, переменная i автоматически увеличивается на 1:
Sub for_loop() For i = 1 To 5 MsgBox i Next End Sub
Exit For 'Выход из цикла ForДавайте рассмотрим пример, который наглядно покажет:
Sub for_loop () Dim max_loops As Integer max_loops = Range ("A1") 'В A1: мы указали лимит количества повторений For i = 1 To 7 'Ожидаемое количество циклов: 7 If i> max_loops Then 'Если A1 является пустой или содержит число < 7, уменьшить количество повторений Exit For 'Если условие ПРАВДА, выход из цикла For loop End If MsgBox i Next End Sub
Другие операторы Exit :
Exit Do 'Выход из цикла Do Loop
Exit Sub 'Выход из процедуры
Exit Function 'Выход из функции