2010-08-09 3 views
5

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

По существу, проблема заключается в том, что свойство ApplicationDisplayAlerts установлено по умолчанию True и по какой-либо причине изменить его нельзя. Возможно, это связано с тем, что когда я нахожу ошибку, она всегда отображает предупреждение об окончании | отладки | Справка и никогда не обращается к прикладной обработке ошибок.

Я запускаю 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 (как это необходимо). Тип ошибки не имеет значения, важно то, что я получаю ошибку и никогда не попадаю в обработчик ошибок.

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

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

ответ

21

Нажмите ALT + F11 из Excel для доступа к редактору VBA.

Меню «Инструменты» -> «Параметры» -> вкладка «Общие».

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

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

+0

Я помню, что один, мне потребовалось некоторое время, чтобы понять это тоже. –

+0

Большое спасибо! Я знал, что это было что-то смешное, что я не замечал. Это сработало отлично! Большое спасибо: -D –

+0

Хороший ответ. скриншот ftw. –