在Excel中使用VBA,相当的方便,但是不能排除代码本身的错误。
一旦代码出现错误,Excel就会终止代码的运行,重则造成Excel程序崩溃。下面,给大家介绍一下,相应的VBA异常处理语句On Error介绍,以防不测。
一、On Error 语句的语法介绍
On Error 语句,其功能是:启动一个错误处理程序并指定该子程序在一个过程中的位置;也可用来禁止一个错误处理程序。
①语法形式
On Error GoTo line
On Error Resume Next
On Error GoTo 0
②参数介绍
On Error GoTo line :启动错误处理程序,line 参数可以是任何行标签或行号。如果发生一个运行时错误,则程序会跳到 line指定的位置,激活错误处理程序。指定的 line 必须在一个过程中,这个过程与 On Error 语句相同;否则会发生编译时间错误。
On Error Resume Next :当一个运行时错误发生时,程序转移到紧接着发生错误的语句之后的语句,并在此继续运行。访问对象时要使用这种形式而不使用 On Error GoTo。
简言之,On Error Resume Next的作用就是,哪行发生错误,就忽略这一行不执行,直接跳到错误行的下一行继续运行。
On Error GoTo 0 :禁止当前过程中任何已启动的错误处理程序。
二、On Error 语句的实例
实例一:
On Error GoTo MyWrong
Sheets("绩效工资").Delete '如果绩效工资工作表存在,则马上删除并强制退出程序
Exit Sub
MyWrong: '如果绩效工资工作表不存在,则无条件转移到该处,并给出提示!
MsgBox "绩效工资工作表不存在!"
实例二:
On Error Resume Next
Sheets("绩效工资").Delete '删除绩效工作工作表;不管绩效工资工作表存不存在,都不会有任何错误提示
MsgBox "绩效工资工作表不存在!"
实例三:
On Error GoTo MyWrong
On Error goto 0
Sheets("绩效工资").Delete '删除绩效工作工作表;
MyWrong: '如果绩效工资工作表不存在,则无条件转移到该处,并给出提示!
MsgBox "绩效工资工作表不存在!"
代码说明,由于On Error goto 0已经禁止当前过程中任何已启动的错误处理程序,因此,就相当于没有On Error GoTo MyWrong,只要遇到问题,Excel就会发生异常,弹出提示甚至崩溃。
请注意On Error GoTo MyWrong和On Error goto 0的顺序,不能颠倒。