4.4.5-跳出循环或函数或过程

当我们使用循环寻找信息时,当找到需要的信息时,希望循环立刻终止,减少不必要的资源浪费。我们这时候就可以使用Exit For,表示立即终止当前循环,继续执行For…Next后的代码。

以下代码输出的结果如图4-11所示,当i取值为5时,If i = 5 Then为True,执行Exit For,退出循环,执行循环体后的语句Debug.Print ("程序执行完毕")

Sub test5()
    For i = 1 To 1000 Step 1
        If i = 5 Then
            Exit For
        Else
            Debug.Print (i)
        End If
    Next i
    
    Debug.Print ("程序执行完毕")
End Sub

../_images/4-11.png

图4-11 循环Exit


当有多层循环时,从Exit For向上数,遇到的第一个For 循环为其退出的循环。以下代码执行的结果如图4-12所示

Sub test6()
    For i = 1 To 2 Step 1
        For j = 1 To 100 Step 1
            If j = 5 Then
                Exit For
            Else
                Debug.Print (j)
            End If
        
        Next j
    Next i
    
    Debug.Print ("程序执行完毕")
End Sub
 

../_images/4-12.png

图4-12 Exit For退出最近For循环


Exit也可以退出Sub,以下代码退出当前Sub过程,执行结果如图4-13,从结果发现Exit Sub后的代码全部没有被执行。

Sub test7()
    Debug.Print ("程序执行开始")
    x = 1
    
    If x = 1 Then
        Exit Sub
    End If
    
    Debug.Print ("程序执行完毕")
End Sub

../_images/4-13.png

图4-13 Exit Sub


同理Exit也可以退出Function,以下代码执行结果如图4-14所示,fun8函数只返回了2。如果分步调试执行代码,你会发现,当运行到Exit Function,整个fun8函数就执行完毕了。

Sub test8()
    x = fun8()
    Debug.Print (x)
End Sub

Function fun8()
    fun8 = 2
    Exit Function
    fun8 = 3
End Function

../_images/4-14.png

图4-14 Exit Function


综上所述,Exit的效果就是退出,合理使用Exit,极大节约计算机资源。