Этот цикл будет выполняться вечно, а точнее Do…Loop используется для выполнения большого количества однообразных действий. Также у этого цикла имеется возможность досрочного завершения – Exit Do. Синтаксис: Do //инструкции// [Exit Do] – необязательный аргумент //инструкции// Loop Инструкции - действия, выполнение которых повторяется бесконечно. Пример №1: В нижеуказанном примере, во втором столбце проставляется значение ИСТИНА, до того момента пока в следующей (нижней) ячейке пусто. Цикл завершается если следующая (нижняя) ячейка не пустая (If Not IsEmpty(Cells(i, 2).Offset(1, 0).Value) Then Exit Do).
Sub example1()
Dim i As Long
Do
i = i + 1
Cells(i, 2).Value = True
If Not IsEmpty(Cells(i, 2).Offset(1, 0).Value) Then Exit Do
Loop
End Sub
Пример №2:
В данном примере, в выделенном диапазоне (Selection.Cells) с помощью двух циклов генерируются случайные числа, до тех пор, пока в диапазоне не появятся повторяющиеся значения (If Application.WorksheetFunction.CountIf(Selection.Cells, Rng.Value) > 1 Then Exit Do).
Sub example2 ()
Dim Rng As Range
Do
For Each Rng In Selection.Cells
If Application.WorksheetFunction.CountIf(Selection.Cells, Rng.Value) > 1 Then Exit Do
Rng.Value = Round(Rnd(1) * 1000)
Next
Loop
End Sub
|