循环就是方便有效地重复相同或相似的操作。
Sub for循环()x = 0 '初始值为0 x = x 1 'x=1 x = x 2 'x=3 x = x 3 'x=6 x = x 4 'x=10 x = x 5 'x=15 Range('a1') = xEnd Sub
上面代码运行后单元格A1的值是15.很容易看懂,X初始值是0,然后经过一系列的累加运算,最后x=15.
上面每一条代码都是重复的操作,在VBA中循环就为此而生。
Sub for循环() Dim x As Integer Dim i As Integer x = 0
'for...next构成完整的循环结构
For i = 1 To 5 x = x i Next Range('a1') = x
End Sub
第一个代码的重复操作,就被for...next循环代替了。要解释原理的话,可以这么理解:for...next循环里内置一个计数器,当i=1时,执行for...next之间的代码,完毕i自动加1,i变成2...直到i=6,超出了5的范围,循环结束,执行下一句代码。
for...next是一个整体,在写代码的时候,新手往往只写了for而忘记写next,因而提示
所以,建议写for循环的时候,写完for就回车敲一个next,写将结构写完整,再在for循环结构内写上其他代码。
循环能解决神马实际问题吗?这里结合前面学到的知识,来举个栗子,代替vlookup查询。
用函数=VLOOKUP(E2,A2:B6,2,0)非常容易得出布欧的战斗力是888.用VBA代码如下:
Sub vvlookup()
1: Dim i As Integer
2: For i = 2 To 6
3: If Range('a' & i) = Range('e2') Then
4: Range('f2') = Range('b' & i)
5: End If
6: Next
End Sub
代码注释:
1:声明变量i为整型。
2:依次循环单元格A2到单元格A6。
3:如果A列单元格的值和单元格E2的值(布欧)相等,那么就找对人了...如果不是布欧,那么继续找。
比如,按照顺序,先找到龟仙人,不对,再找下一个,天津饭,也不对,再找下一个,对了.....循环结构内重复的就是这样的找人操作,找到了触发条件读取其战斗力。
4:找到布欧后将其战斗力输入单元格F2。
5:if判断结构写法,结束判断。
6:进入下一次循环(重复相似相同操作),直到循环结束。
这里要补充的是:
Range('a' & i)
是单元格Range和变量 i 结合的一种写法。其中a(有双引号)表示A列;i 是变量,声明了数据类型为整型,而循环当中又给i 赋值为 2到6,因此,在循环内,就是分别引用单元格A2到单元格A6.i=2,表示Range('a2')即单元格A2,注意Range()括号里面是文本和变量的链接,需要用&符号。前面文章有简要提过Range。
if...end if是VBA中的条件判断语句,在后面会有介绍,它是VBA中出场率十分高的结构之一,很多实际问题往往离不开if条件判断。
联系客服