最近芒果台的《爸爸去哪儿》很火,今天咱们也来聊聊代码去哪儿之Goto语句。 通过Goto语句,可以无条件地转移到过程中的指定的行,从而实现不同程序段间作流程控制。 语法: GoTo Line Line:必要参数,line可以是过程内任意的行号或行标签。
什么是行号? 用来识别一行代码。 行号可以是任何数值的组合,在使用行号的过程内,该组合是唯一的。 行号必须在从一列开始。(输入时,不在第一列,输入完成后,会自动调整到第一列)
Sub GotoStatementDemo() Dim Number, MyString Number = 1 '设置变量初始值。 If Number = 2 Then GoTo 1 Else GoTo 2 '判断 Number 的值以决定要完成那一个程序区段 1: MyString = 'Number等于1' GoTo 3 '完成后跳转到最后一行。 2 MyString = 'Number等于2' 3:Debug.Print MyString '将MyString变量的值显示在“立即”窗口。 End Sub
经过测试: A.在代码区输入行号后接着输入语句(不用在行号后输入空格)后,VBE会自动帮你在行号和语句之间填入一个空格。 例如当在一行输入5msgbox'a'回车后,VBE会帮你修正为5 msgbox 'a' B.行号可以单独占一行 C.行号后面可加可不加冒号
什么是行标签? 用来指示一行代码。行标签可以是任何字符的组合,以字母开头,以冒号 (:) 结尾。 行标签与大小写无关,必须从第一列开始。
Sub GotoStatementDemo() Dim Number, MyString Number = 1 '设置变量初始值。 If Number = 1 Then GoTo Line1 Else GoTo Line2 '判断 Number 的值以决定要完成那一个程序区段
Line1: MyString = 'Number等于1' GoTo LastLine ' 完成后跳转到最后一行。
Line2:MyString = 'Number等于2'
LastLine: Debug.Print MyString '将MyString变量的值显示在“立即”窗口。 End Sub
对于标签,冒号是要求必须使用的。 如果不使用,在有编译错误的提示(子过程或函数未定义) 同一个模块内,标签也必要是唯一的。 例如: Line1:msgbox 'a' Line1:msgbox 'a' 运行时会有编译错误 (当前范围内重复声明)
另外需要注意的地方: 太多的 GoTo 语句,会使程序代码不容易阅读及调试。 尽可能使用结构化控制语句(Do...Loop、For...Next、If...Then...Else、Select Case)。
|