【烟花原创】VBA零基础之第19篇 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)。