【问题标题】:Error label executed any time随时执行的错误标签
【发布时间】:2015-04-30 12:45:07
【问题描述】:

晚上好朋友! 我在处理访问中的 vba 错误时遇到问题。发生错误时它工作正常,问题是子程序将执行所有内容,即使我根本没有错误,我总是会收到错误消息! 代码:

Private Sub SaveEmployee_Click()

    On Error GoTo Err_handlar

    If List7.ListCount = 0 Then
     Dim dial As String
     dial = MsgBox("No employee was chosen. Quit the process?", vbYesNo, "No Entry!")
     If dial = vbYes Then
       DoCmd.Close
     End If
    Else
     Dim i As Integer
     Dim record As Recordset
     Dim lname As String
     Dim query As String
     ReDim employeelist(List7.ListCount - 1)
     For i = 0 To List7.ListCount - 1
        lname = Right(List7.ItemData(i), Len(List7.ItemData(i)) - InStrRev(List7.ItemData(i), " "))
        query = "Select EmployeeID from 0TBL_Employees where FirstName =trim('" + Left(List7.ItemData(i), Len(List7.ItemData(i)) - Len(lname)) + " ') and LastName=trim('" + lname + "')"
        Set record = CurrentDb.OpenRecordset(query)
        employeelist(i) = record!EmployeeID
     Next i
     For i = 0 To 1
       MsgBox employeelist(i)
     Next i
     DoCmd.Close
   End If

 Err_handlar:
    MsgBox "Error during doing the operation, please contact M&E unit!",         vbOKOnly, "Fatal Error"
    Exit Sub
End Sub

【问题讨论】:

    标签: ms-access error-handling vba ms-access-2007


    【解决方案1】:

    您的Exit Sub 行必须放在之前 Err_handlar: 以便正常操作在msgbox 之前退出。

    【讨论】:

    • 这就是错误处理程序在 vba 中的工作方式吗?我认为跳入代码会影响性能。非常感谢@pterandon
    • 我认为不断地告诉用户有一个致命错误会对性能造成更大的问题。;-) VBA 错误处理程序位于 Exit Sub 和 End Sub 之间的标记部分。这样,除非发生错误,否则不会执行错误处理代码。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-05-06
    • 1970-01-01
    • 2022-07-02
    • 2014-02-23
    • 1970-01-01
    • 2021-11-13
    • 1970-01-01
    相关资源
    最近更新 更多