Привязка пользовательского окна сообщения об ошибке, не может работать с ошибками во время выполнения?

745
Lauren

Я пытаюсь создать своего рода «библиотеку» для ошибок, которые появляются, чтобы люди, использующие мои электронные таблицы, сразу знали, что пошло не так. Это нормально работает для стандартных ошибок, но я не могу заставить его отключиться из-за ошибок во время выполнения. В этом случае возникает ошибка выполнения 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 

Спасибо!

0
Ваш код выполняется во время выполнения. нет ничего необычного в том, что вы не можете использовать языковые конструкции для обработки ошибок во время выполнения. Frank Thomas 6 лет назад 0
Можно ли вообще вызвать мое сообщение при обнаружении ошибки во время выполнения? Lauren 6 лет назад 0
Не вообще. Окно сообщения создается средой выполнения, поэтому в случае сбоя невозможно выполнить код, когда вы находитесь в этом состоянии. Frank Thomas 6 лет назад 0
Хорошо, спасибо за ваш ответ. Это происходит только в том случае, если в этом случае я навязываю ошибку 1004, так что, надеюсь, они просто будут знать, как исправить 1004, а 53 вообще не появятся. Спасибо! Lauren 6 лет назад 0

1 ответ на вопрос

0
niton

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

Намеренное повышение ошибки 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.

Похожие вопросы