分享

VBA入门07:For......Next循环

 L罗乐 2017-09-13

        循环就是方便有效地重复相同或相似的操作。

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') = x End 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条件判断。






    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多