3.1 On Error GoTo
表示如果自本行开始后面的代码执行出错,则跳至指定位置继续执行。如:
Sub te4()
On Error GoTo con
Debug.Print "a" + 3
Debug.Print 8 - 5
con:
Debug.Print "error occur"
End Sub示例中第2行设置了On Error GoTo con,即当第3行出错时,就跳到con标记处,执行自con后的代码。标记后面应加上冒号(:)。第3行中,用双引号包含的a是一个字符串,而3是一个数字,直接将字符串与数字相加是会出错的,所以这里会触发错误,第4行不会被执行到,程序会直接跳转到con处,执行后面的Debug.Print语句。程序输出error occur。
注意,如果把第3行和第4行交换位置,则程序会先输出8-5的结果(即3),再输出error occur。 3.2 On Error Resume Next
表示如果代码执行出错,则从出错代码的下一行代码继续执行。如:
Sub te3()
On Error Resume Next
Debug.Print 5 + 3
Debug.Print "a" + 3
Debug.Print "error occur"
End Sub代码第3行执行正常,第4行将出错,于是直接执行第5行。所以程序的输出是:
8
error occur 最后要提醒的是,以上提到的两种错误处理的方法应尽量尽量少用。因为有错误应该去解决它,而不是跳过它。 作业:
执行以下代码,观察输出结果,务必结合输出结果理解代码的每一行及它的逻辑。
Sub test()
On Error GoTo con
Debug.Print 3 + 3
Debug.Print 5 * 5
con:
Debug.Print "error occur"
Debug.Print "Do you understand this all?"
End Sub 2. 执行以下代码,观察执行结果,务必结合输出结果以错误提示理解代码的每一行及整个代码的逻辑。
Sub test1()
On Error GoTo con
On Error GoTo 0
Debug.Print 3 + 3
Debug.Print "c" - 3
Debug.Print 5 + 5
con:
Debug.Print "error occur"
Debug.Print "Do you understand this all?"
End Sub