_如果您正在编写VBA程序,并且希望多次执行相同的任务,则可以通过使用VBA for循环来执行此操作。 VBA是一种顺序编程语言。每行代码从上到下执行,直到没有更多的代码行可读取为止。如果要返回并执行任务,则必须使用宏代码强制执行。

您可以通过循环获得结果。_

VBA中的For循环是最常见的循环类型之一。 For循环具有两种形式:For Next和For Each In Next。 For循环通常用于在项目或数字列表中顺序移动。

要在任何给定点结束For循环,我们可以使用exit语句。

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为止。当上述两个值都匹配时,循环将最后执行一次,然后循环停止。

以上所有内容可能会让某些人感到困惑,所以让我们着手准备并开始学习excel中的For Loop。

创建一个新的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是声明为整数的变量作为循环的起点。这些值可以是任何数字,并且EndEnd为5 StartNumber从1开始,对于StartNumber = 1至EndNumber表示代码将从1(开始编号)开始到5(结束编号)

  • MsgBox StartNumber&“为”&“ 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,并且每次Range(“ B”&X)递增1。该行将存储X的值并选择单元格B1到B56接下来的4行,即使用Selection.Interior将选择内部colorindex并从该colorindex的X中获取值,以使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步;这将以X中的1开始,直到50为止,每次递增2 * Range(“ C”&X).Value = X;该行将存储X的值,并将传递到范围C1至C50

img9

循环5(VBA用于带有STEP指令的反向循环)

For循环中的计数器不必从低到高移动;相反,For循环也可以向后运行,即从高到低。

即使默认情况下,Step值是正向的,也可以按相反的顺序将其设置为数字。

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分配为整数Row包含值1 For X = 50 to 0 Step -1;这将从50开始,在X中递减1,直到0 Range(“ D”&Row)。Value= X;该行将存储X的值,并将传递到范围D1至D50

img11

循环6(用STEP-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指定为整数Row包含值1对于X = 100到0,步骤-2;这将从100开始,在X中减2,直到0 Range(“ E”&Row).Value = X;该行将存储X的值,并将传递到范围E1至E100

循环7(对于具有IF条件的循环:从特定单元格开始填充单元格)这将用值11填充单元格F11中的单元格,直到X满足IF条件

img13

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开始,以X递增1,直到条件满足* Range(“ F”&X).Value = X;该行将存储X的值,并将传递到范围F11,直到条件满足

  • 在单元格F50中输入值50后,将显示以下消息框

img15

如果您喜欢我们的博客,请在Facebook上与您的朋友分享。您也可以在Twitter和Facebook上关注我们。

我们很高兴收到您的来信,请让我们知道我们如何改进,补充或创新我们的工作,并为您做得更好。写信给我们[email protected]