介绍四种循环语句的语法:
一、For 循环语法: For 变量=数值 to 数值 Step 步值
“需要执行的语句"
Next 变量
Next 后面的”变量名“,经常被省略。Step 步值 ,省略不写的情况下,变量每次循环后,数值增加1;写上Step 2,那么每次循环 变量+2。步值也可以为负数,如Step -1 ,变量在赋值时,先赋值大数值,往小方向变化。
For i = 10 To 2 Step -1 '倒序循环
Set Rng = Cells(i, n) ' i 为行号,从下往上,i 值不断减小
If Rng = Rng.Offset(-1) Then '当前单元格与其上单元格相同就合并单元格
Rng.Offset(-1).Resize(2).Merge
End If
Next
二、For Each 循环:For Each 变量 IN 对象集合
“需要执行的语句"
Next 变量
"IN 对象集合",因为是在“对象集合”中循环,这里的变量不同上面的FOR循环语句,上面的FOR循环语句中的变量代替数值;这里的变量可能是某个值,也可能是对象(通常的对象类型:单元格、工作表)。
示例1、 变量代表数组中的某个值
For Each pa In Array("[一-龢]{2,4}(?=支)", "[一-龢]{2,4}(?=办)")
.Pattern = pa
For i = 1 To UBound(arr)
If .test(arr(i, 1)) Then
arr(i, 1) = .Execute(arr(i, 1))(0)
End If
Next i
Next pa
此示例中的变量"pa" 不能声明为As String,会报错。就不要用DIM声明。
示例2、变量为单元格
dim rng as Range '声明为单元格
// 依据 f2:f23 单元格的内容生成多个工作表,名称就是f2:f23 单元格的内容
For Each rng In [f2:f23] 'rng 单元格对象
Worksheets.Add after:=Sheets(1) '增加一张工作表,放在第1张工作表之后
Sheets(2).Name = rng
Next rng '可只写 Next
For 或 For Each 都是限定范围的循环语句,Do ... Loop 循环属于无限定范围的循环语句(无限循环)。为了使循环有意义,需加条件让循环退出,于是就有
三、Do While 条件表达式(表达式的值要为逻辑值,为TRUE才执行循环)
“需要执行的语句"
LOOP
注意,循环体里的语句,必定会对条件产生影响,导致条件能不成立,不然就成死循环了。
四、 Do
“需要执行的语句"
LOOP Until 条件(表达式的值要为逻辑值,为TRUE就会退出循环)
同样要注意避免产生死循环。
While 与 Until 都可写在 DO 的后面或是 Loop 后面,功效是一样的。只是通常写法:While写在Do后,Until 写在 Loop后。