Excel VBA 之For Next循环

.简单for循环

当你知道你需要重复运行多少次某段语句时,可以使用For…Next语句。它的语法如下:

For 计数器 = 开始 To 结束 [step  步长]
    语句1
    语句2
    [Exit For]
    语句N
Next [计数器]

 

从开始到结束,反复执行For和Next之间的指令块,除非遇到Exit For语句,将提前跳出循环。其中,步长和Exit For语句以及Next后的计数器均为可选项。

计数器是个储存反复次数的数字型变量,开始是你期望的起始计数点,结束则表明循环应该执行多少次,步长是计数器每次的变化量(可正可负)。

 当程序遇到关键字Next时,它将回到循环的开始处,并且再次执行循环里面的代码,直到计数器到达结束值。一旦计数器的值大于关键字To后面的数值,程序就会跳出循环。因为计数器变量在每次执行循环后会自动地变化,它早晚会超出结束的值。每次程序执行循环里的语句后,变量计数器的值会默认地增加1,你可以使用Step语句来改变这个默认设置。例如,要使计数器每次增加3,就可以使用以下语句:

For counter = 1 To 5 Step 3

验证:将单元格(1,1)、(4,4)分别赋值为1和4

Sub test()
    For i = 1 To 5 Step 3
        Cells(i, i) = i
    Next i
End Sub

程序将需要执行循环里面的指令2次。嵌套在循环里面的赋值语句(If…Then…Else)告诉程序给单元格(1,1)、(4,4)分别赋值为1和4

程序每完成一次循环,它就跳到关键字For来比较i的值和5的值。

二.多重for循环

一般情况下,我们只使用到一个For语句,如果你使用多个For语句,那么就是For语句的嵌套或多重使用了。

1、简单的三重for语句为:

Sub test()
    Dim m
    Dim n
    Dim k
    m = 1
    n = 1
    k = 1
    For m = 1 To 6
        For n = 1 To 6
            For k = 1 To 6

            Next k
        Next n
    Next m
End Sub

下面,我们来学习如何在多重循环中退出循环跳转至某个循环:要想学习多重循环中如何退出某个循环,我们可以跟踪并输出某个变量的值,就可以追踪到循环运行到哪个位置并退出循环了。

2、退出第三个循环

Sub test()
    Dim m
    Dim n
    Dim k
    m = 1
    n = 1
    k = 1
    For m = 1 To 6 '第一个循环
        For n = 1 To 6 '第二个循环
            For k = 1 To 6 '第三个循环
                If (k = 3) Then
                    Exit For
                 End If
            Next k
        Next n
    Next m
    
    MsgBox ("现在的m值为:" & m & "  现在的n值为:" & n & "  现在的k值为:" & k)
End Sub

此时的m为7、n为7,而k则为3,说明,第一第二个循环完全运行,而第三个循环每次都只运行到k等于3就退出第三个循环了,第三个循环没有完全运行。

3、退出第二个循环

Sub test()
    Dim m
    Dim n
    Dim k
    m = 1
    n = 1
    k = 1
    For m = 1 To 6 '第一个循环
        For n = 1 To 6 '第二个循环
            If (n = 3) Then
                Exit For
                For k = 1 To 6 '第三个循环
                Next k
            End If
        Next n
    Next m
    
    MsgBox ("现在的m值为:" & m & "  现在的n值为:" & n & "  现在的k值为:" & k)
End Sub

这个时候,m的值为7,n的值为3,而k的值为1,在这个循环过程中,第一个循环完全执行,第二个循环只执行到n=3就不再运行,而第三个循环一直都不执行。

4、退出第一个循环

Sub test()
    Dim m
    Dim n
    Dim k
    m = 1
    n = 1
    k = 1
    For m = 1 To 6 '第一个循环
    If (m = 3) Then
        Exit For
        For n = 1 To 6 '第二个循环
            For k = 1 To 6 '第三个循环
            Next k
        Next n
        End If
    Next m
    
    MsgBox ("现在的m值为:" & m & "  现在的n值为:" & n & "  现在的k值为:" & k)
End Sub

这个时候,m的值为3,n的值为1,而k的值为1,在这个循环过程中,第一个循环只执行到m=3就不再执行了,而第二第三个循环,一直都没有执行。

综上所述,上面的例子分别给大家列举了三重for循环,如何退出其中的某个循环,在此过程中,仅使用简单的Exit For语句就可以实现了,但是,难点在于,Exit For所放的位置,要配合if语句来使用,这样才起到效果,否则会导致循环嵌套的混乱。

你可能感兴趣的:(Excel,VBA知识点杂烩,excel,VBA)