On Error是有用的错误提示语法,它可以放在程序开头,下面列举了嵌套到2次的子程序s_2,看是否有效?
新建From1(窗体),新建Command1(按钮CommandButton),代码:
Private Sub Command1_Click()
On Error GoTo hErr
Call s_1
hErr:
MsgBox "错误号:" & Err.Number & vbCrLf & Err.Description, vbCritical, "错误"
End Sub
Private Sub s_1()
Call s_2
End Sub
Private Sub s_2()
MsgBox 3 / 0
End Sub
Private Sub Command2_Click()
On Error GoTo mark1
If 1 = 1 Then
On Error Resume Next
End If
Debug.Print 1 / 0
Exit Sub
mark1:
Debug.Print "over"
End Sub
Private Sub Command3_Click()
On Error Resume Next
On Error GoTo 0 '让出错继续提示出错
Debug.Print 1 / 0
End Sub
Command1运行结果:
错误号:11
除数为零 16 错误
看来是有效的。毕竟Command1_Click还可能调用很多子程序。
Command2运行结果:
(空的)
证明了最近的On Error Resume Next已经让On Error GoTo mark1无效了。
Command3运行结果:
提示出错,看来On Error GoTo 0 会让出错继续提示出错。
所以可以配合使用:
On Error Resume Next
Debug.Print 1 / 0
On Error GoTo 0