VBA的3种错误处理方式 on error goto 0 /-1 , on error resume next , on error goto index,是抛出异常,还是忽略报错,还是进行错误捕捉?
总结
- on error goto 0 /-1 '直接抛出异常
- on error resume next '忽略,但是可以配合 if 等来处理
- on error goto index '处理异常
1 基本错误捕捉语句 (自动抛出异常)
- on error goto 0 约等于 缺省默认,什么也不写
- on error goto 0 停止执行!并且直接抛出对应错误。
- on error goto -1 处理掉前面的出错进程,又开启一个新的,也会报错
- 两者详细差别,stack overflow上有
excel - Difference between 'on error goto 0' and 'on error goto -1' -- VBA - Stack Overflow
2 其他错误处理语句 (不抛出异常 / 不管异常 / 或 同时自己处理异常)
- on error resume next
- on error resume next 配合 if 一样可以部分实现 类 on error goto 0 效果,但一般来说肯定没有on error goto 0 全!
一个例子
Sub t5()On Error Resume Next
a = 1 / 0
Debug.Print "a=" & aOn Error GoTo 0
b = 1 / 0
Debug.Print "b=" & bEnd Sub
3 错误处理其他方法
- on error goto index
- 配合 index 使用
- 注意 block 是顺序执行,on error goto index 只影响它后面的语句
- 纯文本提示也可以
- on error goto Err_Handle
- 配合Error_Handle:使用
Error_Handle:
errNum = ErrorsHandle
If errNum = 0 Then
Resume
ElseIf errNum = 1 Then
Resume Next
Else
Exit Sub
End If
举例说明,如果要多次处理不同的错误,或者分段处理报错
- on error goto XX 单独使用一般只能处理一次报错,写多个也没用
- on error goto XX 配合 on error goto -1 可以处理这种情况
- on error resume next 屏蔽报错,然后用if 处理也可以(但是要有if 确实遍历了所有出错的可能性)
例子1
Sub t2()On Error GoTo line1a = 1 / 0Debug.Print "11"
line1:Debug.Print "12"On Error GoTo line2b = 1 / 0Debug.Print "21"
line2:Debug.Print "22"On Error GoTo line3c = 1 / 0Debug.Print "31"
line3:Debug.Print "32"End Sub
例子2
Sub t4()On Error GoTo line1a = 1 / 0Debug.Print "11"
line1:On Error GoTo -1Debug.Print "12"On Error GoTo line2b = 1 / 0Debug.Print "21"
line2:On Error GoTo -1Debug.Print "22"On Error GoTo line3c = 1 / 0Debug.Print "31"
line3:On Error GoTo -1Debug.Print "32"End Sub
例子3
Sub t3()On Error Resume Nexta = 1 / 0Debug.Print "11"
line1:Debug.Print "12"b = 1 / 0Debug.Print "21"
line2:Debug.Print "22"c = 1 / 0Debug.Print "31"
line3:Debug.Print "32"End Sub
VBA的3种错误处理方式 on error goto 0 /-1 , on error resume next , on error goto index,是抛出异常,还是忽略报错,还是进行错误捕捉?相关推荐
- manjaro软件源报错 不停看到错误 “PackageName: signature from “User <email@archlinux.org>“ is invalid“ 的几种解决方法
manjaro软件源报错 不停看到错误 "PackageName: signature from "User " is invalid" 的几种解决方法 参考文 ...
- 怎么解决 报错 HTTP 405 错误 – 方法不被允许Method Not Allowed‘ on ‘/‘
在svn提交或者更新时,遇到自己或者别人代码报错, 405 错误经常和 POST 方法同时出现 请求路径中'/'不被允许,那肯定是注解中关于路径的请求方式写错了, 检查你的注解@RequestMapp ...
- PHP json_decode()报错 json_last_error()判断错误类型 解决
PHP json_decode()报错 json_last_error()判断错误类型 解决 背景:最近在用curl请求接口获取json数据串的时候,一直出现PHP中json_decode()解析字符 ...
- Oracle导入大数据量(百万以上)dmp文件,报错ora-12592 :包错误
进行自动化测试过程中,发现需要重新搭建一套自动化测试库,然后利用pl/sql对数据库导出: 进行导入后发现报错ora-12592 :包错误 原因分析,数据量过大,传输超时,需要在Oracle服务端以及 ...
- 淘宝联盟 推广链接 API取链 转链报错 传入参数错误,请检查adzone_id是否属于appkey拥有者
通过之前的取链文章,现在新增渠道时候报错 传入参数错误,请检查adzone_id是否属于appkey拥有者","request_id":"f7vemdro9du ...
- 微信登录报错Scope 参数错误或没有 Scope 权限
想要实现微信扫码登录 https://open.weixin.qq.com/connect/qrconnect?appid=appid&redirect_uri=redirect_uri&am ...
- 关于Windows Server自动重启,并出现日志报错WHEA-Logger 47错误解决方案
关于Windows Server自动重启,并出现日志报错WHEA-Logger 47错误解决方案 参考文章: (1)关于Windows Server自动重启,并出现日志报错WHEA-Logger 47 ...
- 远程桌面复制文件到本地,报错“未指定的错误”
从远程桌面复制一个文件到本地C盘,报错"未指定的错误",参考该博文后解决了.方法就是在连接远程桌面时,在设置中勾选"端口"."驱动器"和 ...
- 整理各种Vue项目在IE浏览器白屏报错 SCRIPT1002:语法错误
目录 一.关于 sockjs-client 依赖包 二.关于 highlight 依赖包 三.关于 swiper 依赖包 四.IE 不支持 ES6 语法 五.第三方插件引入导致 六.本地环境正常,生产 ...
- eclipse内部浏览器报错:此错误(HTTP 500 内部服务器错误)意味着您正在访问的网站出现了服务器问题,此问题阻止了该网页的显示
eclipse内部浏览器报错:此错误(HTTP 500 内部服务器错误)意味着您正在访问的网站出现了服务器问题,此问题阻止了该网页的显示 修改eclipse设置即可解决: window->pre ...
最新文章
- MIT重磅报告:一文看清AI商业化现状与未来
- nginx $mail-send()发送邮件报错_基于SMTP协议的E-MAIL电子邮件发送客户端软件C#实现...
- JS的Date.setMonth()方法坑
- linux 下批量压缩文件
- 2011年ESRI北京站IDL视频教程(全)
- ezcad旋转轴标刻参数_激光打标机软件ezcad中菜单下的地球仪标刻功能介绍及其操作设置...
- intellij idea 15 万恶的光标跟随
- 一款java游戏收齐绿宝石哈,神奇宝贝绿宝石游戏
- verilog符号 与或非 异或_与非门、或非门、异或门、同或门的逻辑表达式和逻辑符号怎么写...
- Java实验1-1【超市购物小程序】
- App Store上的健身应用
- 浅谈Spring事件监听
- spring不停机部署_关于不停机部署方案的选择
- 【火龙果】评测三 MicroPython上手初体验
- Linux下如何彻底删除用户
- 使用SpringBoot一小时快速搭建一个简单后台管理(后端篇)
- 回文是指正读反读均相同的字符序列,如“abba”和“abdba”均是回文但“good”不是回文,试写一个算法判断给定字符是否为回文。
- 知识分享之Golang——json与omitempty的使用
- Linux中EOF用法
- Win10将谷歌浏览器设置为默认浏览器(修改默认应用)