-
我们在写程序的时候往往不知道内部出了什么问题,所以问题返回机制还是比较重要的,程序可以不正确,但是程序一出问题直接就闪退崩溃也是一大麻烦,所以这里我们先探讨一下VBA的错误返回机制
-
我们先上代码
CorelDRAW.Optimization = True
On errer GoTo cuowu
'中间放需要的任意代码
cuowu:
CorelDRAW.Optimization = False
CorelDRAW.Refresh
- 第一行的作用就是关闭渲染, 很清楚,在这种情况下如果是没有错误返回机制,那么一旦碰到了问题则在碰到问题的那一行就中断运行了,那么我们回到主程序的时候,画面自动更新并没有打开,所以这已经完完全全影响到了主程序的正常运行,所以,我们在第二行接上一句
On errer GoTo cuowu
这样子一句,那么当程序在运行当中碰到错误的时候会直接跳转至后面的cuowu:
这一行的位置接着运行, 这样子就直接省略了还未运行的中间的一大段代码,让程序能够一直跑到结尾,虽碰上错误但主程序仍然正常,那么使用这种格式来写VBA程序就是非常有必要的 cuowu
这个是代号,可以随意取名- 然后再看一下VB当中的无视错误
On error resume next
,如果写上刚才这一句,那么在后面出现错误的时候程序会直接无视这句错误继续执行相邻的下一句 On error
的句式的作用范围就是从这一句起一直到End Sub或者End Function为止
CorelDRAW.Optimization = True
On errer resume next
'中间放需要的任意代码
cuowu:
CorelDRAW.Optimization = False
CorelDRAW.Refresh
- 这一段遇到了错误会继续执行当中的代码一直到结尾,并且不会报错,有时候程序会出现一些小问题但是影响并不大的时候可以使用这一句来忽略程序中的报错问题
- 当然还有一种是
On error goto 0
,这一句就是禁止已经启动的错误处理程序,一般来说这一句就是用来关闭前面已经打开的On error goto
或者是On error resume next
, 也就是在On error goto 0
这一句之后的代码不再处于错误处理的范围内,仍按照正常的一句一句执行,举个例子
CorelDRAW.Optimization = True
On errer GoTo cuowu
'(1)放任意代码
On error goto 0
'(2)放错误代码
cuowu:
CorelDRAW.Optimization = False
CorelDRAW.Refresh
- 可以看到, 这个格式,我们在(1)处的代码碰到了问题会跳至cuowu处接着运行,而在(2)处如果碰到了问题就会直接报错中断并不会跳转到cuowu处了,所以
On error goto 0
就起到了一个关闭错误处理的功能