可以使用 Do...Loop 语句去运行语句的块,而它所用掉的时间是不确定的。当条件为 True 或直到条件变成 True 时,此语句会一直重复。
当使用 While 关键字去检查 Do...Loop 语句中的条件时,可以有两种方法。可以在进入循环之前检查条件式,也可以在循环至少运行一次之后才检查条件式。
在下面的 ChkFirstWhile
过程中,在进入循环之前检查条件。如果将 myNum
的值由 20 替换成 9,则循环中的语句将永远不会运行。 在ChkLastWhile
过程中,在条件变成 False 之前循环中的语句只执行一次。
Sub ChkFirstWhile() counter = 0 myNum = 20 Do While myNum > 10 myNum = myNum - 1 counter = counter 1 Loop MsgBox 'The loop made ' & counter & ' repetitions.'End SubSub ChkLastWhile() counter = 0 myNum = 9 Do myNum = myNum - 1 counter = counter 1 Loop While myNum > 10 MsgBox 'The loop made ' & counter & ' repetitions.'End Sub
当使用 Until 关键字去检查 Do...Loop 语句中的条件时,可以使用两种方法。可以在进入循环之前检查条件(如同 ChkFirstUntil
过程所示),也可以在循环至少运行一次之后才检查条件(如同 ChkLastUntil
过程所示)。当条件仍然为 False 时,循环继续。
Sub ChkFirstUntil() counter = 0 myNum = 20 Do Until myNum = 10 myNum = myNum - 1 counter = counter 1 Loop MsgBox 'The loop made ' & counter & ' repetitions.'End SubSub ChkLastUntil() counter = 0 myNum = 1 Do myNum = myNum 1 counter = counter 1 Loop Until myNum = 10 MsgBox 'The loop made ' & counter & ' repetitions.'End Sub
可以使用 Exit Do 语句来退出 Do...Loop 语句。例如,为了退出无穷循环,可以在 If...Then...Else 语句或是 Select Case 语句的 True 语句块中使用 Exit Do 语句。如果条件为 False,则循环会象通常那样运行。
在下面的示例中,myNum
被赋予一个会造成无穷循环的值。而 If...Then...Else 语句会去检查这个情况然后退出,以避免无穷循环。
Sub ExitExample() counter = 0 myNum = 9 Do Until myNum = 10 myNum = myNum - 1 counter = counter 1 If myNum < 10 Then Exit Do Loop MsgBox 'The loop made ' & counter & ' repetitions.'End Sub
注意 可以按 ESC 或 CTRL BREAK 键来终止无穷循环。
联系客服