For…To…Next语句
可以使用For…To…Next语句去重复一个语句块,而重复次数的数值是指定的。For 循环使用一个计数变量,当重复每个循环时计数变量的数值会增加或减少。
使用For…To…Step…Next,其中Step可以指定增加(正数)或减少(负数)步长值。
可以在计数变量到达它的结束值之前,使用 Exit For 语句来退出For…To…Next语句,其中可以用If…Then…Else…End If语句作判断。
示例如下:
Sub NewTotal()
Dim myNum As Integer, Total As Integer
For myNum = 16 To 2 Step -2 'myNum从16到2循环,每次减少2
Total = Total + myNum 'Total变量累加myNum变量的数值
If myNum < 5 Then '如果myNum值小于5时退出循环
Exit For
End If
Next
MsgBox "The total is " & Total '显示累加的Total变量的数值
End Sub
For Each
For Each…Next语句作用于集合中的每个对象或是数组中的每个元素。当循环执行一次VBA会自动设置一个变量,例如:
Sub ForEachSheet()
Dim wkSheet As Worksheet 'wkSheet定义为工作表类型的变量
'在本工作簿之内所有工作表中循环
For Each wkSheet In ThisWorkbook.Worksheets
MsgBox wkSheet.Name '显示每个工作表的名称
Next
End Sub
可以在循环体中使用Exit For语句来退出循环。
Do
可以使用Do…Loop语句循环执行其中的语句块,循环执行所用的时间是不确定的,当程序编制有错误时,容易进入死循环。所以一定要检查好循环中的跳出逻辑条件,当条件为True或直到条件变成True时,循环终止。
1.Do While条件…Loop
只有当满足条件时才进入循环体,例如:
Sub doWhile1()
Dim I As Integer
Do While I < 10 'I小于10时,循环继续
I = I + 1 '累加I变量值
Loop
End Sub
2.Do…Loop While条件
先进入循环体执行一次,然后再判断是否满足条件,例如:
Sub doWhile2()
Dim I As Integer
Do
I = I + 1 '累加I变量值
Loop While I < 10 'I小于10时,循环继续
End Sub
3.Do until条件…Loop
只有当达到条件时,才退出循环体,例如:
Sub doWhile3()
Dim I As Integer
Do Until I = 10 'I等于10时,退出循环
I = I + 1 '累加I变量值
Loop
End Sub
4.Do…Loop until条件
先进入循环体,直到满足条件时,才退出循环,例如:
Sub doWhile4()
Dim I As Integer
Do
I = I + 1 '累加I变量值
Loop Until I = 10 'I等于10时,退出循环
End Sub
5.Do…Loop,没有任何条件,循环体中用If…Then…Else…End If语句判断,如果符合条件,用Exit Do语句退出循环。
