Обработка ошибок VBA не работает в Excel - PullRequest
5 голосов
/ 09 августа 2010

У меня не было большого опыта работы с VBA, но я иногда использую его на работе. Недавно я столкнулся с проблемой, которая не должна возникать, и которую ни мой начальник, ни я не можем понять.

По сути, проблема в том, что свойство Application DisplayAlerts по умолчанию установлено на True и не может быть изменено по какой-либо причине. Возможно, это связано с тем, что, когда я сталкиваюсь с ошибкой, он всегда отображает предупреждение End | Debug | Help и никогда не попадает на примененную обработку ошибок.

Я использую 64-разрядную версию Office 2010 на 64-разрядной машине с Windows 7. Тем не менее, я не считаю, что это проблема платформы, так как я тестировал на разных платформах, операционных системах и перестановках программного обеспечения, и ни на одной другой машине такой ошибки не было; только мой.

Я создал пример кода на случай, если кто-то сталкивался с этим ранее или у него есть какие-либо идеи. Единственное, о чем я могу думать, это то, что на моей машине установлено что-то, что вызывает это. Но после очистки программы и многих перезапусков я уже не приблизился к расшифровке того, что это может быть.

Public Sub TestErrorHandler()

    ' Suppress alerts
    Application.DisplayAlerts = False

    Dim strArray(1) As String
    strArray(0) = "Hello"
    strArray(1) = "World"

    ' Set up error handler
    On Error GoTo ErrHandler

    For i = 0 To 3
        MsgBox strArray(i)
    Next

    ' Strip the error handler
    On Error GoTo 0

    ' Unsuppress alerts
    Application.DisplayAlerts = True

    Exit Sub

    ErrHandler:

    MsgBox "Error: " & Err.Description

    Resume Next

End Sub

Ошибка возникает при третьем перечислении for-loop (как и должно быть). Тип ошибки не имеет значения, важно то, что я получаю ошибку и никогда не обращаюсь к обработчику ошибок.

Любые предложения или помощь по этому вопросу будет принята с благодарностью.

Большое спасибо!

1 Ответ

25 голосов
/ 09 августа 2010

Нажмите ALT + F11 в Excel, чтобы открыть редактор VBA.

Перейти в меню Сервис -> пункт Параметры -> вкладка Общие.

Установить перехват ошибок на «Перерыв при необработанных ошибках»

http://i.msdn.microsoft.com/Aa155729.vba200111pa_f_image004(en-us,office.10).jpg

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...