
在 VBA 编程中,GoTo 结构允许运行时无条件跳转至代码中预设的标签位置,从而跳过 GoTo 语句与目标标签之间的所有中间语句。
该结构在真实开发场景中,最典型的应用是错误处理——当检测到异常(如无效输入、除零、对象未初始化等)时,立即转向专门的错误处理区段执行清理或提示逻辑。
GoTo 的构成包含两个核心要素:GoTo 关键字 + 后续的标签名,以及对应定义的标签语句。其标准写法如下:
GoTo [标签名称] ' 此处代码将被跳过 ... [标签名称]: ' 从此处开始继续执行
程序依据 GoTo 后所指定的标签名称,在当前过程中搜索形如 [标签名称]: 的标记(注意末尾必须为英文半角冒号),并从该行之后的第一条有效语句起恢复执行。
需特别注意:标签必须事先声明,且仅限于同一过程(Sub 或 Function)内有效;跨过程跳转不被支持。
示例
以下是一个典型的除法安全校验示例,演示如何利用 GoTo 避免除零错误:
Sub MyCode()
Dim num1 As Double
Dim num2 As Double
Dim result As Double
num1 = 100
num2 = 0
If num2 = 0 Then GoTo error
result = num1 / num2
Exit Sub
error:
MsgBox "除数不能为零"
End Sub
本例中,因 num2 = 0 成立,程序直接跳至 error: 标签所在位置,result = num1 / num2 这一行完全不会被执行,有效防止了运行时错误。
小结
尽管 GoTo 不属于现代结构化编程推荐的主流控制方式(更倾向使用 If...Else、Select Case、循环及错误处理机制 On Error),但在特定上下文中——例如快速中断流程、集中式错误响应、向导式交互步骤跳转(如“上一步”、“重试”逻辑)等——它仍能显著提升代码清晰度与可维护性。
后续我们将深入探讨 GoTo 在多步骤向导、状态机模拟及与 On Error 协同使用的进阶技巧。
欢迎随时留言交流,或私信获取更多实战案例。











