Простой одинарный цикл
Dim i As Integer For i = 1 To 6 Cells(i, 1).Value = 100 Next i
В данном примере ячейки в первом столбце в строках от одного до 6 будут заполнены значением 100
Одинарный цикл используется для изменения значений в одной строке или в одном столбце.
В рассмотренном примере строки между for i и next i повторяются 6 раз. Начинается цикл выполняться со значения i=1 и в ячейку Cells(i,1) записывается значение 100. Далее программа доходит до оператора next i который увеличивает значение i на один, теперь i=2 и выполнение программы переходит снова к оператору for. Оператор for проверяет не превысило ли i конечное значение и если нет то выполняется тело цикла для значения 2. Так цикл выполняется 6 раз. И на 7 раз происходит выход из цикла и программа заканчивается.
Двойной цикл
Dim i As Integer, j As Integer For i = 1 To 6 For j = 1 To 2 Cells(i, j).Value = 100 Next j Next i
В данном примере телом цикла for i является еще один цикл for j который выполняется для каждого значения i в результате для первой строки i=1 выполняется цикл j в котором записываются значения 100 в первый и второй столбец так как j изменяется от 1 до 2. Далее мы переходим к следующему i и все повторяется для второй строки. В итоге выполнения цикла значениями 100 заполнятся два столбца.
Данный алгоритм применяется для работы с таблицами.
Тройной цикл.
Dim c As Integer, i As Integer, j As Integer For c = 1 To 3 For i = 1 To 6 For j = 1 To 2 Worksheets(c).Cells(i, j).Value = 100 Next j Next i Next c
В данном примере используется тройной цикл. В нем для первых трех листов выполняется двойной цикл. В результате в первых трех листах будут записаны значения 100 в 6 строк для первых двух столбцов
Do While цикл
Для начала выполнения задания введите случайные 6 чисел в первый столбец.
Dim i As Integer i = 1 Do While Cells(i, 1).Value <> "" Cells(i, 2).Value = Cells(i, 1).Value + 10 i = i + 1 Loop
Данный цикл выполняется до тех пор пока значение ячейки не пустое. Цикл while выполняется до тех пор пока выполняется условие которое идет после него ( в нашем случае пока ячейка не пустая. Cells(i, 1).Value <> «»). Такой цикл подойдет когда мы работаем с неизвестным количеством строк.
Пример выполнения программы.
Добавьте значения в первый столбец в строки 7 и 8 и заново запустите макрос. Он выполнится для этих строк тоже так как они не пустые.
Цикл for each для Range
Dim rng As Range Dim Cell As Range Set rng = Range("A1:B6") For Each Cell In rng Cell.Value = Cell.Value * Cell.Value Next Cell
В данном примере мы задаем Range и возводим каждую ячейку этого диапазона в квадрат.
Цикл For Each переводится для каждого значения,
в нашем случае для каждой ячейки из диапазона (For Each Cell In rng)
Выполните цикл и проверьте что все значения из диапазона возведены в квадрат.
Проверка всех строк в столбце
For i = 1 To Rows.Count If Cells(i, 1).Value < 5 And Not IsEmpty(Cells(i, 1).Value) Then Cells(i, 1).Font.Color = vbRed End If Next i
В данном примере мы используем Rows.Count — количество строк. Для Excel 2010 максимальное количество строк = 1 миллион. И в этом примере все не пустые строки со значениями <5 будут окрашены в красный цвет.