![d59e4e0dd1d6ebdfc83c7a7d8fe3cbf4.png](https://i-blog.csdnimg.cn/blog_migrate/7ff96d58c37981acaf47dd6e8ffb69ab.png)
今天,我们来学习下VBA中出镜率不亚于IF语句的,FOR循环语句。
掌握了这两种语句,可以搞定90%的基本功能。
组合起来使用,更是其乐无穷!
接下来,我们将学习For循环语句的两种基本结构。
主要分为:①For ....Next循环结构, ② For Each ....Next 循环结构。
01 For....Next循环结构
首先,我们来了解下For ....Next循环结构。
它的主要过程是,我们先设定一个范围,在这个范围中,系统会不断重复执行我们设计的一个或几个步骤,输出结果。
当不在范围内时,这些步骤不会被执行。
打个比方,我们要炒蛋,炒几个蛋,放什么调料,什么时候翻面,什么时候放调料,我们都预先设定好了,我们需要期待的,就是会炒出什么样的蛋。
For Next 结构的代码格式如下:
For i=初始值 to 结束值 Step 步长
操作1
操作2
......
Next
接下来,我们举个例子来说明上面代码的意思。
例如:卤蛋是个投资小白,他听从卤飞师兄的建议,每个月固定投资1500块钱,投资一年,假定每个月的收益是本金的0.8%。这个时候,初始值就是1月份,结束值就是12月份,步长就是1个月。这3个值确定了循环的次数。
然后,操作1就是每个月投资1500块钱。操作1,操作2,……操作N,就是我们让系统重复执行的步骤。当时间变为明年1月份时,已经不在我们约定的范围内(今年1月-今年12月),设定的操作也就不会再执行了。
对应的VBA代码,核心就是:
For i = 1 To 12 (step 1)
卤蛋这个月所有的钱=卤蛋上个月所有的钱 * (1+收益率) +1500
Next(步长为1时,Step 1 可以省略)
当投资金额达到1万块的时候,卤蛋发现自己很有钱了,决定不继续投资了。对应的VBA代码如下:
For i = 1 To 12
If 投资金额>10000 Then
Exit For '跳出循环
Else
卤蛋这个月所有的钱=卤蛋上个月所有的钱 * (1+收益率) +1500
投资金额= 截止上月累计投资金额+1500
End If
Next
02 For Each....Next循环结构
接下来,我们来了解下For Each ....Next循环结构。
它和For....Next结构相似,唯一的区别在于,加上了Each,Each后面会有一个对象,比如Range,Workbook等。
关于的对象的说明,可以查看下面这篇文章。
数据大作手:写VBA代码前你所需要掌握的概念(上)zhuanlan.zhihu.com![51021617abbb031c6054680a4a7360ac.png](https://i-blog.csdnimg.cn/blog_migrate/2d2c466e461ac03c53c46158964d5fa2.png)
For Each ....Next结构的代码格式如下:
For each 对象变量 in 集合 操作1
操作2 ......
Next
例如:在A1:D6这一区域,每个单元格输入一个随机值,将所有的值求和,判断是不是偶数。
For Each i In Range("A1:C6")
i.Value = Int(Rnd() * 100) + 1
sum_range = i.Value + sum_range
Next
在这里,对象变量就是i,也就是某一个单元格。
集合,就是A1:D6这一区域。
完整版代码如下:
Sub 判断偶数()
Dim sum_range As Integer
sum_range = 0 '定义单元格求和的初始值为0
For Each i In Range("A1:C6") '在符合A1:C6 范围内的条件时做循环
i.Value = Int(Rnd() * 100) + 1 '随机生成1-100的整数值
sum_range = i.Value + sum_range '将单元格的值求和
Next
If sum_range Mod 2 = 0 Then '判断是不是偶数
MsgBox "这些单元格的求的值是" & sum_range & "是偶数哦"
Else
MsgBox "这些单元格的求的值是" & sum_range & "不是偶数哦"
End If
End Sub