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