讲座和练习
往期相关VBA教学:VBA入门教程第一季,共41期
如果觉得有用的话可以带走本备课的草稿(有实际改动)
前言
本期我们主要讨论错误处理,而不是错误本身,因为错误的类型很多,而且很无聊。 谈论他们太无聊了。
尤其是我们这样的上班族,这种为了自娱自乐而写的代码,即使代码有错误、挂了,也没什么大不了的,找到并改正就好,但有时候是难免的,我们就分享一下和其他人。 使用,
所以,你写的东西一定要改进,比如容错性、人性化的提示、模块化的功能,方便别人,给你一些小小的满足。
(我们也不会涉及太多的磁盘和文件处理,它们都是小功能,所以我们不会展开太多)
主题
我们的讲解也是以解谜的方式进行,尽量用通俗的词语和例子让大家明白(不写成绕口令也可以)
先写一个简单的demo,然后F5执行
可见VBA的错误提示非常粗暴,而且还有调试选项。 这是我们在使用的时候不希望别人看到的。 这时候就需要出现错误处理。
每个人都应该接触过两种最常见的错误处理语句。
On Error Goto Line/Label在错误发生后启动错误处理机制,通过Goto跳转到指定行或标签执行错误处理代码(稍后我们会讨论扩展问题)
On Error Next 发生错误后,代码返回到错误的下一句并继续执行(一种非常通用的方法)
我们尝试添加万金油(未注释),到这里问题就基本可以解决了。本期结束
当然这是个玩笑,因为我们还要进一步优化。 如果你想优化,你必须理解这些语句。
所以我在错误时做了一些分割,转到行/标签,下一步
关于错误声明
启动错误处理程序并指定子例程在进程中的位置; 也可用于禁用错误处理程序。
语法
出错时转到行
出错时下一步
On Error GoTo 0' 禁用当前进程中任何已启动的错误处理程序(VBA 默认模式)
我觉得这个解释比较容易理解。 On Error代码告诉系统我已经启动了错误处理机制。 如何处理取决于下面的内容(后面一定要有东西,不然会报错)
转到语句
转到行/标签
一个跳转语句,唯一可能让你困惑的是这个LINE是什么?
因为很多人一开始就把Line和代码行数联系在一起,所以下面我就写demo1。
line不是代码行数,是你自己定义的位置。 其实你可以把它想象成一个标签,每个人都会习惯使用标签。
一般错误处理代码放在最后。 如果代码没有错误,则错误代码会在最后执行,所以必须在正常程序的末尾添加exit子语句。
错误处理程序结束后,恢复原来的操作。
[0]
下一个
行/标签
一般来说,它是错误处理机制中用于回调正常代码的语句。 0是发生错误的语句,next是发生错误的语句的下一句,最后一句是指定的标签。
出错时转到 0
这意味着错误处理机制恢复为默认。 很多人不明白为什么要恢复默认机制?
我们为 demo2 编写这样的代码
有时候你可以使用next来实现一些功能,但是你想在编写时暴露后续的错误,所以你再次打开它们。 当然,您也可以编写自己的错误处理代码。
至此基本知识点大家都知道了。
我们这样写最终完整版的demo3(当然这里的例子还不是太完美)
两个问题:为什么这个案子没有办完? 因为如果错误代码中仍然存在错误,那么激活的错误处理机制将无法处理自己的错误。
因此,如果想要万无一失,应该先结束级别错误机制,跳转到自己定义的错误处理程序,然后使用on error作为第二级防护,第二级防护会直接弹出友好的提示并退出程序。
小徐的教程【VBA入门】错误处理第41期已经结束了。 VBA第一季已经结束。 视频风格也在不断变化。 希望能够对大家的工作有所帮助。 希望大家帮我转发一下。 欢迎大家关注我。 另外我们第二季再见,再见