首先欢迎各位朋友来到这个平台,分享自己的成果,福不唐捐,总会有所收获。无论是EXCEL的操作,还是VBA的操作,都会对大家有所帮助。知识的讲解过程中,希望大家得到哪怕是一点点的收获,我的时间就是有意义的。 今日给大家讲VBA的循环,这个是非常基础的知识,在VBA的相关内容中我也一直在用,也在不断的讲解。今日专门作为一个专题给大家详细地说明,中间也有一些有意思的小例子,供大家玩耍。 一FOR NEXT语句这种循环是以指定的次数来重复执行一组语句 这个结构一般是这样的: for counter= start to end [ step步长值] [statements] [exit for] [statements] Next counter 具体解释一下,初始值指的是循环开始的值,结束值指的是循环结束的值,实质上就是counter值的一个判断,如果counter值在起始值和结束值之间,那么进入循环语句,然后counter值每运行到next语句后,会自动加一个步长值,直至counter值超出了初始值到结束值这个范围,循环才会结束。这里要说明一下,“step步长值”往往是省略掉的,省略掉的话,步长取默认值为1。下面将以一段小实例来具体说明这个结构的用法。 实例:在sheet1工作表中一次输出1到100这些数,显示在第一列中。 程序: Sub kk() Sheets(“sheet1”).select Dim i As Integer For i = 1 To 100 Cells(i, 1) = i Next End Sub 二for each …NEXT语句这种循环主要功能是对一个数组或一个对象进行操作,让所用元素执行一次循环语句 For each element in group [statements] [exit for] [statements] Nexr element 具体解释一下,在for next循环中主要是数值变量,而for each …NEXT这种结构是对象变量。什么意思呢?each……in指的是在这个对象集合里面,一次将每一个对象都遍历一边。同样的道理,执行到next后对象自动指到下一个。具体我们来看一下下面的一个实例吧。 实例:给一个数据区域a1:d5内的所有单元格随机赋值。 分析:显然数据区域就是一个对象集合,单元格就是这个集合里面的对象。 程序: Sub JJ() Sheets("SHeet1").Select Dim i As Integer For Each c In Range("a1:d5") c.Value = Rnd Next End Sub 三DO loop语句在条件为true时,重复执行命令区域 DO WHILE CONDITION [statements] [exit do] [statements] LOOP 或者: DO [statements] [exit do] [statements] LOOP WHILE CONDITION 备注:上面的while可以用until代替。 VBA中如果事先不知道将重复多少次循环,只是知道判断的条件,那么使用Do...Loop语句。Do...Loop语句重复执行某段代码直到条件是true或条件变成true。重复执行代码直到条件是true使用While关键字来检查Do... Loop语句的条件。 举例:我们用Do While语句来解决求1—100的自然数的和的问题: Sub my_sum() Dim Lsum As Long, i As Long i = 1 Do While i Lsum = Lsum + i i= i + 1 Loop MsgBox "1到100的自然数和为:" & Lsum End Sub 好了,到这里把三个循环体都做了讲解,上面也讲到了三个实例,截图如下,我都做了测试,可以使用。 今日内容回向: 1 VBA中三种循环体是什么? 2三种循环的区别和联系是什么? 3如果不知将循环多少次?用哪个循环体? 4试着把第一个例子改成第三个的模式。 分享成果,随喜正能量 |
|