Я пытаюсь создать своего рода "библиотеку" для ошибок, которые появляются, чтобы люди, использующие мои электронные таблицы, сразу знали, что пошло не так. Это нормально работает для стандартных ошибок, но я не могу заставить его отключиться из-за ошибок во время выполнения. В этом случае возникает ошибка выполнения 53, я думаю, потому что она пытается удалить временный файл, который не был успешно сохранен (это то, что будет отображаться в моем окне сообщения).

Примечание. Я не пытаюсь решить эту ошибку, я специально отключил ее, чтобы пользователи знали, что случилось. Я пытаюсь заставить данное окно сообщения появиться, когда Ошибка выполнения 53 происходит.

Итак, этот макрос работает, так как это просто стандартная ошибка 1004:

 Sub ReportSaveandEmail()
   Dim IsCreated As Boolean
   Dim i As Long
   Dim PdfFile As String, Title As String
   Dim OutlApp As Object
   On Error GoTo Whoa

 '-> Sub deleted 

Whoa:
Dim OutPut As Integer   
Select Case Err.Number
    Case 1004 'Search error'
        OutPut = MsgBox("Found an error (#1004).  This error usually occurs when the macro is searching for a file or folder that doesn't exist. Please check your code.", vbCritical, "File not found")
End Select
End Sub

Но эта ошибка, время выполнения, не срабатывает. Я просто получаю стандартное окно сообщения Excel: «Micosoft Visual Basic | Ошибка выполнения 53 | Файл не найден»

 Sub ReportSaveandEmail()
   Dim IsCreated As Boolean
   Dim i As Long
   Dim PdfFile As String, Title As String
   Dim OutlApp As Object
   On Error GoTo Whoa

 '-> Sub deleted 

 Whoa:
     Dim OutPut As Integer    
     Select Case Err.Number
         Case 53 'Can't find file to delete'
        OutPut = MsgBox("Found an error (#53).  This error usually occurs when the macro tries to delete a temporary file that was not successfully created.", vbCritical, "Temp File not found")
End Select      
End Sub

Спасибо!

1 ответ1

0

Ваш код неполон, он не демонстрирует, как вы установили ошибку.

Намеренное повышение ошибки 53, кажется, работает как следует.

Sub ReportSaveandEmail()

    On Error GoTo Whoa
    Err.Raise 1004
    Err.Raise 53
    Exit Sub

Whoa:

    Select Case Err.number
        Case 1004 'Search error'
            MsgBox "Found an error (#1004).  This error usually occurs when the macro is searching for a file or folder that doesn't exist. Please check your code.", vbCritical, "File not found"
            Resume Next

        Case 53 'Can't find file to delete'
            MsgBox "Found an error (#53).  This error usually occurs when the macro tries to delete a temporary file that was not successfully created.", vbCritical, "Temp File not found"
            Resume Next

    End Select

End Sub

Обратите внимание, что после того, как вы подняли 1004, вы должны очистить или возобновить, чтобы поймать 53.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .