On Error Goto ErrorHandler ' 发生错误时跳转到 ErrorHandler Dim x As Integer Dim y As Integer y = 0 x = 10 / y ' 这里会触发除零错误 MsgBox "这行代码不会被执行" Exit Sub ' 避免进入 ErrorHandler 代码块 ErrorHandler: MsgBox "发生错误! 错误代码: " & Err.Number & ", 描述: " & E...
在VBA(Visual Basic for Applications)中,"On Error GoTo" 是一种强大的错误处理机制,允许开发者在遇到运行时错误时,将程序的控制流转移到指定的错误处理代码段。下面是对"On Error GoTo"的详细解释和示例: 1. 解释VBA中的"On Error GoTo"语句的用途 "On Error GoTo" 语句用于在VBA程序中处理运行时错误。当...
而下面的代码由于及时使用了On Error Goto 0语句,因此,在第2次错误发生时(即第2个x/y),系统将显示内置错误消息,而不是运行MyErr标签处的代码。 1SubErrTest1()23DimxAsInteger, yAsInteger, zAsSingle45x =167y =089OnErrorGoToMyErr1011MsgBoxx /y1213OnErrorGoTo01415MsgBoxx /y1617MsgBox"继续执行错误代码...
下面的代码虽然未使用 On Error Goto 0 语句,但是在第 2 个错误发生前,添加了第2 个错误标签,因此,两个错误处理程序分别处理各自的错误。 Sub ErrTest2() Dim x As Integer, y As Integer, z As Single x = 1 y = 0 On Error GoTo MyErr1 MsgBox x / y On Error GoTo MyErr2 MsgBox x / y...
Sub GotoLabel() Dim x As Long Dim y As Long On Error GoTo errH x = 6 y = 6 / 0 x = 7 Done: Exit Sub errH: MsgBox "发生了错误: "& Err.Description EndSub 运行代码的结果如下图5所示。 图5 运行上述VBA代码,代码执行到以0作为除数这一行时,发生错误,代码跳至On Error GoTo 语句指...
Sub GotoLabel() Dim x As Long Dim y As Long On Error GoTo errH x = 6 y = 6 / 0 x = 7 Done: Exit Sub errH: MsgBox "发生了错误: "& Err.Description EndSub 运行代码的结果如下图5所示。 图5 运行上述VBA代码,代码执行到以...
首先,当可能产生错误的代码行前添加On Error Goto ErrHandler,设置自定义错误标签。遇到错误时,如果没有On Error Goto 0,程序会直接跳转到错误标签,显示调试和结束选项。在宏或程序尾部, Exit Sub用于在无错误时终止错误处理,避免错误程序的执行。错误标签(如"MyErr:”)用于存放错误处理代码,可...
1 VBA中错误捕捉的方法主要有两种第一种捕捉方法:1、语法:On Error GoTo Err_Handle '如果遇到错误就跳转到错误处理代码语句xxxxxExit Sub/Function(如果没有这条语句,即使没有错误也会执行错误处理语句) Err_Handle: 语句xxxxxx2、举例:Sub 查找数字() ’本段代码查找电子表格中有没有数字12 On ...
On Error GoTo Err_Handle MsgBox Cells.Find(12).Address Exit Sub '如果没有这个退出过程语句,会一直执行下去 Err_Handle: MsgBox ("不存在该数字") End Sub (1)、电子表中数据和代码 (2)、查找12的结果: (3)、查找13的结果: 第二种捕捉方法: ...
④ On Error GoTo 0 一一般的VBA错误处理语句 为了说明上面的几个语句,我们简单的写几行代码,如下:Sub mynz_37()On Error GoTo ErrHandler k = 1 / 0 ExitProcedure:On Error Resume Next k = 1 / 0 + 1 MsgBox k Exit Sub ErrHandler:MsgBox "错误代码: " & Err.Number & vbCrLf & _"错误...