课程咨询 加我微信EXCEL880B 试学网址http://v.excel880.com
GoTo 语句
无条件地转移到过程中指定的行。
语法
GoTo line
必要的 line 参数可以是任意的行标签或行号。
说明
GoTo 只能跳到它所在过程中的行。
注意 太多的 GoTo 语句,会使程序代码不容易阅读及调试。尽可能使用结构化控制语句(Do...Loop、For...Next、If...Then...Else、Select Case)。
GoTo 语句示例
本示例使用 GoTo 语句在一个过程内的不同程序段间作流程控制,不同程序段用不同的“程序标签”来区隔。
Sub GotoStatementDemo() Dim Number, MyString Number = 1 ' 设置变量初始值。 ' 判断 Number 的值以决定要完成那一个程序区段(以“程序标签”来表式)。 If Number = 1 Then GoTo Line1 Else GoTo Line2 Line1: MyString = "Number equals 1" GoTo LastLine ' 完成最后一行。 Line2: ' 下列的语句根本不会被完成。 MyString = "Number equals 2" LastLine: Debug.Print MyString ' 将“"Number equals 1"”显示在“立即”窗口。 End Sub
On...GoSub、On...GoTo 语句
根据表达式的值,转到特定行执行。
语法
On expression GoSub destinationlist
On expression GoTo destinationlist
On...GoSub 和 On...GoTo 语句的语法具有以下几个部分:
部分 | 描述 |
---|---|
expression | 必要参数。数值表达式,其运算结果应该是一个界于 0 到 255 之间的整数,包含 0 和 255。如果 expression 的计算结果不是一个整数,则它会先四舍五入为一个整数。 |
destinationlist | 必要参数。行号或行标签的列表,之间要以逗号隔开。 |
说明
expression 的值会决定转到 destinationlist 中的哪一行。如果 expression 的值小于 1 或大于列表的项目个数,则会产生下面的结果之一:
如果表达式的值 | 则 |
---|---|
等于 0 | 控制权会转移到 On...GoSub 或 On...GoTo 之后的语句。 |
大于串的项目个数 | 控制权会转移到 On...GoSub 或 On...GoTo 之后的语句。 |
负数 | 会发生错误。 |
大于 255 | 会发生错误。 |
可以在同一个列表中混合使用行号和行标签。在 On...GoSub 和 On...GoTo 中也可随意使用任意个行号和行标签。但是,如果使用了太多的行标签或行号,以至于在一行中放不下,那么就必须在一行后使用续行符来衔接到下一行。
提示 若要执行多重分支,Select Case 提供了一种结构化与适应性更强的方法。
On...GoSub 及 On...GoTo 语句示例
本示例使用 On...GoSub 及 On...GoTo 语句来完成不同的子程序或程序区段。
Sub OnGosubGotoDemo() Dim Number, MyString Number = 2 ' 设置变量初值。 ' Branch to Sub2. On Number GoSub Sub1, Sub2 ' 在 On...GoSub 退出後,程序会回到此处来继续完成。 On Number GoTo Line1, Line2 ' 完成 Line2 标记之区段。 ' 在 On...GoTo 退出之后,程序不会回到此处来。 Exit Sub Sub1: MyString = "In Sub1" : Return Sub2: MyString = "In Sub2" : Return Line1: MyString = "In Line1" Line2: MyString = "In Line2" End Sub
提示
实际工程中 On Error Goto 标签 用的更多
其实可以看做是On numer goto 语句 就是对错误代码进行跳转处理
除去错误处理一般我们不要使用GOTO语句 只有一种情况需要
那就是多层循环从内存 直接跳出整个循环的时候 用GOTO语句比较方便