Циклический является одним из самых мощных методов программирования. Петля в Excel VBA позволяет перебрать диапазон ячеек с помощью всего лишь несколько кодов строк.

Одиночные петли

Вы можете использовать один цикл для перебора одномерного диапазона ячеек.

Поместите ссылка: VBA Create-A-макро-# командной кнопки [Кнопка управления] / на листе и добавьте следующие строки кода:

Dim i As Integer

For i = 1 To 6

Cells(i, 1).Value = 100

Next i

Результат при нажатии на кнопку управления на листе:

Single Loop in Excel VBA

Объяснение: строки кода между For и Next будет выполняться шесть раз. Для г = 1, Excel VBA вводит значение 100 в ячейке на пересечении строки 1 и столбца 1. Когда Excel VBA достигает Далее я, это увеличивает I с 1 и переходит обратно к Для постановки. Для I = 2, Excel VBA вводит значение 100 в ячейке на пересечении строки 2 и столбца 1 и т.д.

Примечание: это хорошая практика, чтобы всегда отступ (табл) код между словами Для и Next. Это делает легче читать ваш код.

двойная петля

Вы можете использовать двойной цикл для перебора двухмерной диапазона ячеек.

Поместите ссылка: VBA Create-A-макро-# командной кнопки [Кнопка управления] / на листе и добавьте следующие строки кода:

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

Результат при нажатии на кнопку управления на листе:

Double Loop in Excel VBA

Объяснение: Для I = 1 и у = 1, Excel VBA вводит значение 100 в ячейке на пересечении строки 1 и столбца 1. Когда Excel VBA достигает Next J, оно увеличивает J с 1 и переходит обратно к Для J заявления , При г = 1 и J = 2, Excel VBA вводит значение 100 в ячейке на пересечении строки 1 и столбца 2. Далее, Excel VBA игнорирует Далее, поскольку J J работает только от 1 до 2. Когда Excel VBA достигает Далее я , это увеличивает я с 1 и прыгает обратно к ибо я заявление. Для I = 2 и у = 1, Excel VBA вводит значение 100 в ячейке на пересечении строки 2 и столбца 1 и т.д.

Тройной контур

Вы можете использовать тройной цикл для перебора двумерный диапазонов на нескольких рабочих листах Excel.

Поместите ссылка: VBA Create-A-макро-# командной кнопки [Кнопка управления] / на листе и добавьте следующие строки кода:

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

Объяснение: Единственное изменение, внесенное по сравнению с кодом для двойного цикла является то, что мы добавили еще одну петлю и добавил Worksheets (с). в передней части клеток, чтобы получить двумерный спектр на первом листе для C = 1, второй лист для с = 2, а третий лист для с = 3. Загрузить файл Excel, чтобы увидеть этот результат.

Do While Loop

Кроме того, для следующего цикла, существуют и другие циклы в Excel VBA. Например, Do While Loop. Код размещен между Do While и Loop будет повторяться до тех пор, как часть после Do While верно.

  1. Поместите ссылка: / VBA-Create-A-макро # командной кнопки [Кнопка управления] на листе и добавьте следующие строки кода:

Dim i As Integer

i = 1

Do While i < 6

Cells(i, 1).Value = 20

i = i + 1

Loop

Результат при нажатии на кнопку управления на листе:

Do While Loop

Объяснение: до тех пор, как я ниже, чем 6, Excel VBA вводит значение 20 в ячейку на пересечении строки я и столбца 1 и шагом я по 1. В Excel VBA (и в других языках программирования), символ «= ‘означает становится. Это не значит, равны. Таким образом, I = I + 1 означает, что я становится + 1. Другими словами: принимают текущее значение из I и добавить к нему 1. Например, если я = 1, я становится 1 + 1 = 2. В результате, значение 20 будет помещен в колонке А пять раз (не шесть, потому что Excel VBA останавливается, когда я равен 6).

  1. Введите несколько чисел в столбце A.

Any Number Of Rows

  1. Поместите ссылка: / VBA-Create-A-макро # командной кнопки [Кнопка управления] на листе и добавьте следующие строки кода:

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

Результат при нажатии на кнопку управления на листе:

Advanced Do While Loop

Объяснение: до тех пор, как клетки (я, 1) .Value не пустой (<> означает не равно), Excel VBA вводит значение в ячейку на пересечении строки и столбца я 2, то есть 10 выше, чем значение в ячейке на пересечении строки I и столбца 1. Excel VBA останавливается, когда я = 7, потому что клетки (7, 1) .Value пуст. Это отличный способ петли через любое количество строк на листе.