Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
查看: 4356|回复: 4

[分享] 【烟花原创】VBA零基础之第101篇 VBA错误处理(五)

[复制链接]
发表于 2014-2-17 23:38 | 显示全部楼层 |阅读模式
本帖最后由 hwc2ycy 于 2014-2-17 23:43 编辑

Resume语句
该语句执行后,会导致程序恢复原有的运行。
可以恢复到错误所在行,或者恢复发生运行错误语句的下一行处开始执行,抑或是跳转到指定的行标签处开始执行。
如果在错误处理程序之外的任何地方使用 Resume 语句都会导致错误发生。
1.Resume
如果错误和错误处理程序出现在同一个过程中,则从产生错误的语句恢复运行。
如果错误出现在被调用的过程中,则从最近一次调用包含错误处理程序的过程的语句处恢复运行。
在错误处理程序中使用这一条语句后,有可能会再次导致运行错误的产生,从而陷入一个错误处理死循环中,这时恐怖就得按CTRL+ALT+DELETE键结束EXCEL程序了。
虽然这条语句很危险,但是在一些特殊场合中又能很好发挥作用。
比如在代码中要建立一个远程数据库连接,但是由于网络速度慢或者突然出现故障的情况下,可以通过Resume语句来不停的重试,在重试的过程中通过设置一个计数器变量。当计数器变量达到一个阀值时可以给出错误提示告诉用户由于网络原因导致连接无法建立。
我在通过IE访问网站时就曾用过这种方法,当时是访问网站出现问题后,但是在产生运行错误后你点继续又能正常运行,碰到类似需要“不停的重试”方能正常运行的情况下,Resume确实还是能解决问题。
示例:      
1.jpg

2.Resume Next
如果错误和错误处理程序出现在同一个程序中,则从紧随产生错误的语句的下个语句恢复运行。
如果错误发生在被调用的过程中,则对最后一次调用包含错误处理程序的过程的语句(或 On Error Resume Next 语句),从紧随该语句之后的语句处恢复运行。
示例1
2.jpg
示例2
3.jpg
在代码调试中,通过单步运行这条语句,可以很容易并且快速的定位到错误产生的代码行,从而更迅速的找出产生错误的直接原因,进而防漏补缺。

3.Resume line
在必要的 line 参数指定的 line 处恢复运行。
line 参数是行标签或行号,必须和错误处理程序在同一个过程中。
当错误处理程序跳转到指定行标签处行时,也要是否产生错误循环。
另外当跳转到指定的行标签处运行后,相关的错误处理完成(通过消息框或相关对象引用关闭并翻译,全局变量的重置)是否有相关的代码实现代码运行流程的改变(例如提前结束代码)。
示例:
4.jpg
其实上面的例子这个resume errExit其实是可以不需要的(想想为什么可以不需要),这里纯粹举例而已。


评分

参与人数 1 +6 收起 理由
笨熊猫 + 6 很给力!

查看全部评分

excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
发表于 2014-2-18 09:26 | 显示全部楼层
回复

使用道具 举报

 楼主| 发表于 2014-2-18 12:25 | 显示全部楼层
错误一:
这时恐怖就得按CTRL+ALT+DELETE键结束EXCEL程序了。
应为
这时恐怕就得按CTRL+ALT+DELETE键结束EXCEL程序了。

错误二:
通过消息框或相关对象引用关闭并翻译
应为
通过消息框或相关对象引用关闭并释放

回复

使用道具 举报

发表于 2014-6-18 13:46 | 显示全部楼层
回复

使用道具 举报

发表于 2020-2-3 07:53 | 显示全部楼层
看不到示例图片怎么办
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-5-2 21:03 , Processed in 0.240026 second(s), 9 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表