2015-04-30 2 views
0

Утренние помощники! У меня проблема с ошибкой обработки с помощью 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 

ответ

1

Ваш Exit Sub линия для размещения до того Err_handlar: так что нормальная работа выходит перед MsgBox.

+0

Как работает обработчик ошибок в vba? Я думаю, что прыжок в коде повлияет на производительность. спасибо большое @pterandon –

+0

Я думаю, что постоянно сообщать пользователю, что есть фатальная ошибка, будет большая проблема с производительностью. ;-) Обработчики ошибок VBA живут в помеченном разделе между Exit Sub и End Sub. Таким образом, код обработки ошибок не выполняется, если не возникает ошибка. – pteranodon

+0

lol Я бы передумал про ярлык «фатальный»: D –