VBA基础语法:GoTo语句
GoTo 语句
⽆条件地转移到过程中指定的⾏。
语法
GoTo line
必要的 line 参数可以是任意的⾏标签或⾏号。
说明
GoTo 只能跳到它所在过程中的⾏。
注意 太多的 GoTo 语句,会使程序代码不容易阅读及调试。尽可能使⽤结构化控制语句(Do...Loop、Next、If...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 expression GoSub destinationlist
On expression GoTo destinationlist
部分描述
expression 必要参数。数值表达式,其运算结果应该是⼀个界于 0 到 255 之间的整数,包含 0 和 255。如果 expression 的计算结果不是⼀个整数,则它会先四舍五⼊为⼀个整数。
destinationlist必要参数。⾏号或⾏标签的列表,之间要以逗号隔开。
说明
expression 的值会决定转到 destinationlist 中的哪⼀⾏。如果 expression 的值⼩于 1 或⼤于列表的项⽬个数,则会产⽣下⾯的结果之⼀:
如果表达式的值则
equals不等于等于 0控制权会转移到 On...GoSub 或 On...GoTo 之后的语句。
⼤于串的项⽬个数控制权会转移到 On...GoSub 或 On...GoTo 之后的语句。
负数会发⽣错误。
⼤于 255会发⽣错误。
可以在同⼀个列表中混合使⽤⾏号和⾏标签。在 On...GoSub 和 On...GoTo 中也可随意使⽤任意个⾏号
和⾏标签。但是,如果使⽤了太多的⾏标签或⾏号,以⾄于在⼀⾏中放不下,那么就必须在⼀⾏后使⽤续⾏符来衔接到下⼀⾏。
提⽰ 若要执⾏多重分⽀,Select Case 提供了⼀种结构化与适应性更强的⽅法。
本⽰例使⽤ 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
source:VBA Help
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论