For…Next语句重复执行一条或多条语句,他的循环次数是指定的。
语法:
For 计数器变量 = 起始值 To 结束值 Step 步长
语句
Exit For
语句
Next 计数器变量
计数器变量:必要参数,用来做循环计数器的数值变量。
For I = 1 To 5
起始值:必要参数,可以是数值或表达式,指定计数器从哪个值开始
结束值:必要参数,可以是数值或表达式,指定计数器结束于哪个值
步长:可选参数,指定计数器变量每次增加的值。
当缺少 step 步长 时,则默认为step 1。步长可以是正数,也可以是负数。
当然也可以是0(是0的话,就只有死循环一条路了)。
正确: For I = 1 To 5
正确: For I = 1 To 5 Step 1
错误: For I = 5 To 1
以上步长是正数(正增长),我们再看看步长为负数的情况(负增长)
正确: For I = 5 To 1 Step -1
错误: For I = 1 To 5 Step -1
当循环中的所有语句都执行后,步长的值 会加到 计数器变量中。
此时循环中的语句可能会再次执行(基于循环开始执行时同样的测试),
也可能是退出循环并从 Next 语句之后的语句继续执行。
需要注意的是:在循环中改变 counter 的值,将会使程序代码的阅读和调试变得更加困难。
Dim i As Integer
For i = 1 To 10
i = i + 2
Next
大家可以看看上面的代码,循环语句一共执行了几次。
Exit for:退出循环。可以在循环中进行判断,如果需要提前结束循环则可以使用此语句。
For I = 1 To 100
J = J + 100
If J > 1000 Then Exit For
Next
NEXT 计数器变量:NEXT后面的计数器变量名是可以省略的。
但如果不省略的话,则注意必须的FOR语名中的计数器变量名一致。
错误的用法:
首尾不一致
For I = 1 To 5
…
Next J
交叉嵌套
For I = 1 To 5
For J = 1 To 5
…
Next I
Next J
可以将一个 For...Next 循环放置在另一个 For...Next 循环中,组成嵌套循环。
不过在每个循环中的 计数器变量 要使用不同的变量名。
For I = 1 To 10
For J = 1 To 10
For K = 1 To 10
...
Next K
Next J
Next I
完整的例子
Sub ListWorksheets()
Dim I As Integer
Dim strMsg As String
strMsg = "当前工作簿 " & ActiveWorkbook.Name & " 包含以下工作表:" & vbCr
'Activeworkbook.name 当前活动工作簿的文件名
For I = 1 To Worksheets.Count
strMsg = strMsg & Worksheets(I).Name & vbCr
'worksheets(i)当前活动工作簿中,第I个工作表
'name,工作表表名
Next
MsgBox prompt:=strMsg, Buttons:=vbInformation + vbOKOnly, Title:="提示"
'消息对话框,prompt是消息对话框显示的文本内容
'buttons指定对话框中显示的按钮和图标样式,是多个值的累加
'vbOkOnly:确定按钮
'vbinformation:信息图标
End Sub