VBA学习笔记六(异常处理)

异常处理综述

在vba代码中并没有 try catch异常处理语句,但有 on error 语句和try catch语句的功能类似;
其形式如:on error +处理方式

异常处理方法分类

语法功能
on error GoTo 0默认报错 ,和不使用该语句报错情况相同
on error Resume Next出现异常后忽略异常,继续执行下一条语句
on error goto [标志语句]出现异常后,跳转到标志语句位置运行出错后处理的语句
resume [标志语句]运行完出错后处理的语句
exit sub异常监测结束,选择性退出过程执行

异常处理方法使用

On error GoTo 0

默认的异常处理方法,该异常处理语句和不使用该语句的报错情况相同,如下图对比:

1、无异常处理的默认情况下:
在这里插入图片描述
2、加入异常处理语句
在这里插入图片描述

on error Resume Next

出现异常后会忽略异常,继续执行下一条语句
在这里插入图片描述

on error goto [标志语句]

当该语句控制的区域类代码出现异常错误时,不会将错误如On Error GoTo 0一样显示出来,而是继续执行标志语句后面的代码,具体使用如下:
在这里插入图片描述
而且可以在标志语句后面添加报错的具体信息:
在这里插入图片描述
具体报错信息代码参考:

Sub test1()
    On Error GoTo ErrorHandle
    
    Dim num1, num2

    num1 = 12
    num2 = num1 / 0
    
ErrorHandle:
    MsgBox "错误代码: " & Err.Number & vbCrLf & _
           "错误描述: " & Err.Description & vbCrLf & _
           "错误来源: " & Err.Source, vbCritical

End Sub

on error goto [标志语句]/Exit sub

Exit sub表示选择性的退出过程执行,即不在执行Exit sub后面的代码
一般和on error goto [标志语句]搭配使用,即将Exit sub 放至标志语句之前,含义是当代码出现异常时,执行标志语句后面的代码,当未出现代码异常,则不需要执行标志语句后面的代码,,(exit sub & end sub的区别参考该链接)具体使用如下:
①、出现异常错误:
在这里插入图片描述

②、未出现异常错误
在这里插入图片描述

on error goto [标志语句]/resume [标志语句]

在执行完异常处理后,若需要继续返回到源代码中继续执行异常语句下面的代码时,采用resume[标志语句],具体使用如下:

Sub test1()

    On Error GoTo ErrorHandle
    
    Dim num1, num2
    
    num1 = 12
    
    num2 = num1 / 0
    
    MsgBox num2

Continue:
    num1 = num1 / 2
    MsgBox num1
    
Exit Sub

ErrorHandle:
    
    MsgBox "错误代码: " & Err.Number & vbCrLf & _
           "错误描述: " & Err.Description & vbCrLf & _
           "错误来源: " & Err.Source, vbCritical
    num2 = 0
    
    Resume Continue

End Sub

执行后会先出现一个错误信息弹框
在这里插入图片描述
点击确定后,弹出第二个弹框
在这里插入图片描述
代码执行完毕。

多个异常处理语句的使用

在一个代码中可以设置多个异常处理的语句,在两个控制语句之间的代码的监测权在上面异常处理语句,具体如下:

Sub test2()

    On Error GoTo ErrorHandle
    
    k = 1 / 0
    
ExitProcedure:
    On Error Resume Next
    k = 1 / 0 + 1
    k = 99
    MsgBox k
Exit Sub
ErrorHandle:
    MsgBox "错误代码: " & Err.Number & vbCrLf & _
           "错误描述: " & Err.Description & vbCrLf & _
           "错误来源: " & Err.Source, vbCritical
    
    Resume ExitProcedure

End Sub

执行后先显示一个错误信息
在这里插入图片描述
点击确定,会执行ExitProcedure:后面的代码:
在这里插入图片描述

参考文章链接

1、https://zhuanlan.zhihu.com/p/137608517.
2、https://zhuanlan.zhihu.com/p/145645889
3、https://blog.csdn.net/lrtcsdn/article/details/78936158

  • 2
    点赞
  • 32
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值