VBA异常处理 Resume Next

为什么需要Resume Next?

先看下面的代码

Sub sub2()
  On Error GoTo handle1
  a = 4 / 0
  Debug.Print "继续1"
  Exit Sub
handle1:
  Debug.Print "除数不能为0"
  Debug.Print "继续2"
End Sub

会输出:

除数不能为0
继续2

现在假设有需求,异常处理完成后,回到出错语句的下一句代码执行。即希望执行完

Debug.Print "除数不能为0"

之后,跳转到

  Debug.Print "继续1"

继续执行。

这种需求可以通过在处理代码中加上Reusme Next实现。


语法

标签:
	Resume Next

示例

Sub sub4()
  On Error GoTo handle1
  a = 4 / 0
  Debug.Print "继续1"
  Exit Sub
handle1:
  Debug.Print "除数不能为0"
  Resume Next '表示继续回到原位置继续执行
End Sub

这里的Resume Next是放在标签: 之后。

输出结果:

除数不能为0
继续1