| Этот цикл будет выполняться вечно, а точнее 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
   |