六 Excel VBA学习笔记:VBA中的循环语句

介绍四种循环语句的语法:
一、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).MergeEnd IfNext
二、For Each 循环:For Each 变量 IN 对象集合
“需要执行的语句"
Next 变量
"IN 对象集合" , 因为是在“对象集合”中循环,这里的变量不同上面的FOR循环语句 , 上面的FOR循环语句中的变量代替数值;这里的变量可能是某个值,也可能是对象(通常的对象类型:单元格、工作表) 。
示例1、 变量代表数组中的某个值
For Each pa In Array("[一-龢]{2,4}(?=支)", "[一-龢]{2,4}(?=办)").Pattern = paFor i = 1 To UBound(arr)If .test(arr(i, 1)) Thenarr(i, 1) = .Execute(arr(i, 1))(0)End IfNext iNext pa
此示例中的变量"pa" 不能声明为As String,会报错 。就不要用DIM声明 。

六 Excel VBA学习笔记:VBA中的循环语句

示例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 = rngNext rng'可只写 Next
For 或 For Each 都是限定范围的循环语句 , Do ... Loop 循环属于无限定范围的循环语句(无限循环) 。为了使循环有意义,需加条件让循环退出,于是就有
三、Do While 条件表达式(表达式的值要为逻辑值,为TRUE才执行循环)
“需要执行的语句"
LOOP
注意,循环体里的语句 , 必定会对条件产生影响,导致条件能不成立,不然就成死循环了 。
四、 Do
“需要执行的语句"
LOOP Until 条件(表达式的值要为逻辑值,为TRUE就会退出循环)
同样要注意避免产生死循环 。
【六 Excel VBA学习笔记:VBA中的循环语句】While 与 Until 都可写在 DO 的后面或是 Loop 后面 , 功效是一样的 。只是通常写法:While写在Do后,Until 写在 Loop后 。

相关经验推荐