_Если вы пишете программу VBA и хотите выполнять одну и ту же задачу несколько раз, вы можете сделать это, используя VBA для циклов. VBA — это язык последовательного программирования. Каждая строка кода выполняется сверху вниз до тех пор, пока не закончатся строки кода для чтения. Если вы хотите вернуться и выполнить задачу, вам нужно принудительно использовать код макроса.

Вы получаете результаты с помощью цикла ._

Цикл For в VBA — один из наиболее распространенных типов цикла. Цикл For имеет две формы: For Next и For Each In Next. Цикл For обычно используется для последовательного перемещения по списку элементов или чисел.

Чтобы завершить цикл For в любой заданной точке, мы можем использовать оператор выхода.

For Loop будет повторяться до тех пор, пока не встретит конечное условие. Как только конечное условие выполнено, процесс программирования продолжится вниз в своем естественном направлении.

The For … Next loop has the following syntax:

For counter = start_counter To end_counter

'Do something here (your code)

Next counter

Фактически мы создаем цикл, который использует счетчик переменных в качестве «хранителя времени» цикла. Мы устанавливаем его на значение, равное start_counter, в начале цикла, а затем увеличиваем его на 1 во время каждого цикла, пока не будет достигнуто конечное условие. Цикл будет выполняться до тех пор, пока значение счетчика не станет равным end_counter. Цикл выполняется в последний раз, когда оба приведенных выше значения совпадают, а затем цикл останавливается.

Все вышеперечисленное может сбить с толку некоторых людей, поэтому давайте подготовимся и начнем изучать For Loop in excel с нескольких примеров.

Создайте новую книгу Excel, затем сохраните ее с расширением .xlsm. Чтобы открыть экран редактора Visual Basic, используйте ALT + F11. Вставить новый модуль. Скопируйте приведенный ниже код в стандартный модуль VB

img1

Цикл 1 (отображение числа с помощью msgbox)

Sub Loop1()

Dim StartNumber As Integer

Dim EndNumber As Integer

EndNumber = 5



For StartNumber = 1 To EndNumber

MsgBox StartNumber & " is " & "Your StartNumber"

Next StartNumber

End Sub

img2

Пояснение к коду:

Код VBA требует, чтобы вы присвоили значение StartNumber, где EndNumber — это переменные, которые объявлены как целые числа в качестве отправной точки для вашего цикла. Эти значения могут быть любым числом, и у нас есть EndNumber, поскольку 5 StartNumber запускается с 1 For StartNumber = 1 To EndNumber означает, что код будет начинаться с 1 (StartNumber) до 5 (EndNumber)

  • MsgBox StartNumber & «is» & «Your StartNumber» отобразит следующее окно сообщения

img3

Loop2 (значения заполнения)

Sub Loop2()

'Fills cells A1:A56 with values of X by looping' --- Comment

'Increase value of X by 1 in each loop' --- Comment

Dim X As Integer

For X = 1 To 56

Range("A" & X).Value = X

Next X

End Sub

img4

Пояснение к коду:

Мы присвоили X целое число. Для X = от 1 до 56; это начнется с 1 и продолжится до 56 с шагом 1 каждый раз * Range («A» & X) .Value = X; эта строка сохранит значение X и перейдет в диапазон от A1 до A56

img5

Loop3 (Заливка ячеек цветом фона)

Sub Loop3()

' Fills cells B1:B56 with the 56 background colours' --- Comment

Dim X As Integer

For X = 1 To 56

Range("B" & X).Select

With Selection.Interior

.ColorIndex = X

.Pattern = xlSolid

End With

Next X

End Sub

img6

Пояснение к коду:

Мы присвоили X как целое число. Для X = от 1 до 56 начнется с 1 и продолжится до 56 с шагом 1 каждый раз Range («B» & X) .Select; эта строка сохранит значение X и выберет ячейки от B1 до B56. Следующие 4 строки, то есть с Selection.Interior, выберут внутренний colorindex и возьмут значение из X этого colorindex, так что 1 принадлежит черному цвету; 2 относится к белому цвету; 3 для красных и т. Д.

img7

Цикл 4 (значения заполнения с шагом 2)

По умолчанию значение Шага равно 1, однако может быть установлено число больше 1.

Sub Loop4()

' Fills every second cell from C1:C50 with values of X' --- Comment

Dim X As Integer

For X = 1 To 50 Step 2

Range("C" & X).Value = X

Next X

End Sub

img8

Пояснение к коду:

Мы присвоили X целое число. Для X = от 1 до 50 Шаг 2; это будет начинаться с 1 в X до 50 с шагом 2 каждый раз * Range («C» & X) .Value = X; эта строка сохранит значение X и перейдет в диапазон от C1 до C50

img9

Цикл 5 (VBA For Loop in Reverse с инструкцией STEP)

Необязательно, чтобы счетчик в цикле For двигался только с меньших значений на более высокие; вместо этого цикл For может работать в обратном направлении, то есть от высоких к меньшим значениям.

Несмотря на то, что значение Шага по умолчанию равно 1, его можно установить в обратном порядке.

Sub Loop5()

' Fills cells from D1:D50 with values of X' --- Comment

' In this case X decreases by 1' --- Comment

Dim X As Integer, Row As Integer

Row = 1



For X = 50 To 0 Step -1

Range("D" & Row).Value = X

Row = Row + 1

Next X

End Sub

img10

Пояснение к коду:

Мы назначили X & Row как целое число. Строка содержит значение 1 Для X = от 50 до 0 Шаг -1; это начнется с 50 с уменьшением на 1 в X до 0 Range («D» & Row) .Value = X; эта строка сохранит значение X и перейдет в диапазон от D1 до D50

img11

Цикл 6 (заполняет каждую вторую ячейку в обратном порядке ШАГОМ-2)

В приведенном выше примере цикла For мы можем использовать Step и order, чтобы увидеть, работает ли цикл For в прямом или обратном направлении.

Sub Loop6()

' Fills every second cell from E1:E100 with values of X' --- Comment

' In this case X decreases by 2' --- Comment

Dim X As Integer, Row As Integer

Row = 1

For X = 100 To 0 Step -2

Range("E" & Row).Value = X

Row = Row + 2

Next X

End Sub

img12

Пояснение к коду:

Мы назначили X & Row целым числом. Строка содержит значение 1 Для X = от 100 до 0 Шаг -2; это начнется с 100 с уменьшением на 2 в X до 0 Range («E» & Row). Value = X; эта строка сохранит значение X и перейдет в диапазон от E1 до E100

img13

Цикл 7 (Цикл для цикла с условием IF: заполняет ячейки, начиная с определенной ячейки) Это заполнит ячейки из ячейки F11 значением 11 до тех пор, пока X не будет соответствовать условию IF

Sub Loop7()

' Starts to fill cells F11:F100 with values of X' --- Comment

' This will exit from the loop after 50' --- Comment

Dim X As Integer

For X = 11 To 100

Range("F" & X).Value = X

If X = 50 Then

MsgBox ("Bye Bye")

Exit For

End If

Next X

End Sub

img14

Пояснение к коду:

Мы присвоили X целое число. Для X = от 11 до 100; начнется с 11 с приращением на 1 в X, пока условие не будет соответствовать * Range («F» & X) .Value = X; эта строка сохранит значение X и перейдет в диапазон F11, пока условие не будет соответствовать

img15

  • После ввода значения 50 в ячейку F50 отобразится следующее окно сообщения

Если вам понравились наши блоги, поделитесь ими с друзьями на Facebook. А также вы можете подписаться на нас в Twitter и Facebook .

Мы будем рады услышать от вас, дайте нам знать, как мы можем улучшить, дополнить или усовершенствовать нашу работу и сделать ее лучше для вас. Напишите нам на [email protected]