在之前的一篇文章中介绍过VBA中的for循环。
这里简单介绍一下for each循环,看一下和for有什么不一样的地方。
1. 打开Visual Basic,添加一个新模块和过程。
2. 如果要在当前工作表中A1到A10单元格都输入同一个数字,用for循环如下图。
Sub 测试()Dim i As IntegerFor i = 1 To 10Range("A" & i) = 1NextEnd Sub
3. 要达到以上的效果,用for each循环则如下。
Sub 测试1()Dim rng As RangeFor Each rng In Range("A1:A10")rng = 1NextEnd Sub
4. 关于以上代码:
rng为变量,这里的意思即为单元格,相当于Range("A1")等等;for each中rng变量是在A1到A10的范围内循环;在定义的时候(Dim rng as Range)也是将rng定义为Range区域或范围;rng=1即是给单元格赋值为1。5. 如果要使A1到A10的数据依次递增,在for循环中可以利用变量i,如图所示。
Sub 测试()Dim i As IntegerFor i = 1 To 10Range("A" & i) = iNextEnd Sub
6. 那么在for each中,通过上面的方法无法实现,则需要再定义一个变量i。
代码:
Sub 测试1()Dim rng As RangeDim i As IntegerFor Each rng In Range("A1:A10")i = i + 1rng = iNextEnd Sub
7. 关于以上的代码:
新定义一个变量i;在for each循环中添加i=i+1,因i初始为整数0,所以第一次循环得到i+1,即0+1等于1;执行到rng=i,即可得到rng=1,后面依次循环递增。
以上就是VBA中for循环与for each循环的简单比较。