Nie miałem dużego doświadczenia z VBA, ale czasami używam go w pracy. Niedawno natknąłem się na problem, który nie powinien się zdarzyć, i że ani mój szef, ani ja nie potrafimy dojść do tego.Obsługa błędów VBA nie działa w Excelu
Zasadniczo problem polega na tym, że domyślnie Application
właściwość DisplayAlerts
jest ustawiona na True
i nie może być zmieniona z jakiegoś powodu. Prawdopodobnie jest to związane z tym, że po wystąpieniu błędu zawsze wyświetla się komunikat End | Debug | Help i nigdy nie trafia w stosowaną obsługę błędów.
Używam 64-bitowego pakietu Office 2010 na 64-bitowym komputerze z systemem Windows 7. Nie uważam jednak, że jest to problem z platformą, ponieważ testowałem na wielu różnych platformach, systemach operacyjnych i permutacjach oprogramowania, a żadna inna maszyna nie ma tego błędu; tylko mój.
Utworzyłem przykładowy kod na wypadek, gdyby ktoś napotkał to wcześniej lub ma jakieś pomysły. Jedyne, co mogę wymyślić, to to, że mam coś zainstalowanego na mojej maszynie, które to powoduje. Ale po programowym oczyszczeniu i wielu ponownych uruchomieniach, nie jestem bliższy rozszyfrowania tego, co to może być.
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
Błąd jest generowany na trzecim wyliczenie for-loop
(tak jak powinien). Typ błędu jest nieistotny, istotne jest to, że dostaję błąd i nigdy nie trafię w procedurę obsługi błędów.
Wszelkie sugestie lub pomoc w tym zakresie byłyby bardzo mile widziane.
Wielkie dzięki!
Pamiętam, że jeden, zajęło mi trochę czasu, aby zrozumieć to zbyt. –
Dziękuję bardzo! Wiedziałem, że to było coś zabawnego, że przeoczyłem. To działało idealnie! Wielkie dzięki :-D –
Dobra odpowiedź. screenshot ftw. –