For i = 0 to 100 For j = 0 to 50 if j=5 then exit for Next j '跳到这里 Next i
Exit For 不错。。 但是还有一种方法: '------------------------ For i = 0 to 100 For j = 0 to 50 If j < 5 Then j = j Else j = 51 End If Next j '跳到这里 Next i '---------------这是很粗糙的方法。。
用Exit for就可跳出内层循环 goto is good
退出控制结构 用 Exit 语句可以直接退出 For 循环、Do 循环、子过程或函数过程。Exit 语句的语法很简单:Exit For 在 For 循环中出现的次数没有限制,Exit Do 在 Do 循环中出现的次数也没有限制。For counter = start To end [Step increment] [statementblock] [Exit For] [statementblock]Next [counter[, counter] [,...]]Do [{While | Until} condition] [statementblock] [Exit Do] [statementblock]Loop Exit Do 语句可以在 Do 循环语法的所有版本中使用。Exit For 和 Exit Do 非常有用,因为它有时适于立即退出循环,而且不再执行循环中的任何进一步迭代或者语句。例如,在前面的打印屏幕和打印机共有字体的例子中,程序不断将打印机字体和给定的屏幕字体作比较,甚至在已经找到了一个相符的打字机字体后还在继续寻找。对这个函数有一个效率更高的改进版,在此,只要找到相匹配的字体后就立即退出循环:Private Sub Form_Click () Dim SFont, PFont For Each SFont In Screen.Fonts () For Each PFont In Printer.Fonts () If SFont = PFont Then Print Sfont Exit For '退出内圈循环。 End If Next PFont Next SFont End Sub正如此例所表明的, Exit 语句几乎总是出现在 If 语句或 Select Case 语句内部,而 If 语句或 Select Case 语句在循环内嵌套。用 Exit 语句中断循环时,计数器变量的值会因退出循环的方式而不同: 在完成循环时,计数器的值等于上限值加上步进值。 在提前退出循环时,计数器变量保持其值,并遵从有关取值范围的一般规则。 在集合之外叠代时,如果计数器变量为 Object 类型,则其值为 Nothing;如果计数器变量为 Variant 类型,则其值为 Empty。 退出子过程或函数过程 也可从控制结构内部退出过程。Exit Sub 和 Exit Function 的语法,和上一节“退出控制结构”中的 Exit For 和 Exit Do 相似。Exit Sub 可以出现在子过程主体内的任何地方,出现的次数随需要而定。当过程已完成每个任务并可直接返回时,Exit Sub 和 Exit Function 是非常有用的。例如,如果想改动前面的例子,使得对查找到的打印机和屏幕的共有字体,只打印其中的第一个,则可用 Exit Sub :Private Sub Form_Click () Dim SFont, PFont For Each SFont In Screen.Fonts () For Each PFont In Printer.Fonts () If SFont = PFont Then Print Sfont Exit Sub '退出过程。 End If Next PFont Next SFont End Sub
For j = 0 to 50
if j=5 then exit for
Next j
'跳到这里
Next i
但是还有一种方法:
'------------------------
For i = 0 to 100
For j = 0 to 50
If j < 5 Then
j = j
Else
j = 51
End If
Next j
'跳到这里
Next i
'---------------这是很粗糙的方法。。
goto is good
用 Exit 语句可以直接退出 For 循环、Do 循环、子过程或函数过程。Exit 语句的语法很简单:Exit For 在 For 循环中出现的次数没有限制,Exit Do 在 Do 循环中出现的次数也没有限制。For counter = start To end [Step increment]
[statementblock]
[Exit For]
[statementblock]Next [counter[, counter] [,...]]Do [{While | Until} condition]
[statementblock]
[Exit Do]
[statementblock]Loop Exit Do 语句可以在 Do 循环语法的所有版本中使用。Exit For 和 Exit Do 非常有用,因为它有时适于立即退出循环,而且不再执行循环中的任何进一步迭代或者语句。例如,在前面的打印屏幕和打印机共有字体的例子中,程序不断将打印机字体和给定的屏幕字体作比较,甚至在已经找到了一个相符的打字机字体后还在继续寻找。对这个函数有一个效率更高的改进版,在此,只要找到相匹配的字体后就立即退出循环:Private Sub Form_Click ()
Dim SFont, PFont
For Each SFont In Screen.Fonts ()
For Each PFont In Printer.Fonts ()
If SFont = PFont Then
Print Sfont
Exit For '退出内圈循环。
End If
Next PFont
Next SFont
End Sub正如此例所表明的, Exit 语句几乎总是出现在 If 语句或 Select Case 语句内部,而 If 语句或 Select Case 语句在循环内嵌套。用 Exit 语句中断循环时,计数器变量的值会因退出循环的方式而不同: 在完成循环时,计数器的值等于上限值加上步进值。
在提前退出循环时,计数器变量保持其值,并遵从有关取值范围的一般规则。
在集合之外叠代时,如果计数器变量为 Object 类型,则其值为 Nothing;如果计数器变量为 Variant 类型,则其值为 Empty。
退出子过程或函数过程
也可从控制结构内部退出过程。Exit Sub 和 Exit Function 的语法,和上一节“退出控制结构”中的 Exit For 和 Exit Do 相似。Exit Sub 可以出现在子过程主体内的任何地方,出现的次数随需要而定。当过程已完成每个任务并可直接返回时,Exit Sub 和 Exit Function 是非常有用的。例如,如果想改动前面的例子,使得对查找到的打印机和屏幕的共有字体,只打印其中的第一个,则可用 Exit Sub :Private Sub Form_Click ()
Dim SFont, PFont
For Each SFont In Screen.Fonts ()
For Each PFont In Printer.Fonts ()
If SFont = PFont Then
Print Sfont
Exit Sub '退出过程。
End If
Next PFont
Next SFont
End Sub