2010-08-09 4 views
5

Non ho avuto molta esperienza con VBA, ma a volte lo uso al lavoro. Recentemente, ho riscontrato un problema che non dovrebbe accadere e che né il mio capo né me stesso possono capire.Errore VBA Gestione non funzionante in Excel

In sostanza, il problema è che la proprietà ApplicationDisplayAlerts è impostata su True per impostazione predefinita e non può essere modificata per qualche motivo. Probabilmente correlato è che quando faccio un errore, visualizza sempre l'avviso End | Debug | Help e non colpisce mai la gestione degli errori applicata.

Sto eseguendo Office 2010 a 64 bit su un computer Windows 7 a 64 bit. Tuttavia, non credo che sia un problema di piattaforma, in quanto ho testato su più piattaforme, sistemi operativi e permutazioni software diverse e nessun'altra macchina ha questo errore; solo mio.

Ho creato un codice di esempio nel caso qualcuno lo abbia incontrato prima o abbia qualche idea. L'unica cosa che posso pensare è che ho qualcosa installato sulla mia macchina che sta causando questo. Ma dopo un programma di epurazione e molti riavvii, non sono più vicino a decifrare quello che potrebbe essere.

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 

L'errore è gettato sul terzo enumerazione della for-loop (come dovrebbe). Il tipo di errore è irrilevante, ciò che è rilevante è che ottengo l'errore e non prendo mai il gestore degli errori.

Qualsiasi suggerimento o aiuto su questo sarebbe molto apprezzato.

Grazie mille!

risposta

21

Premere ALT + F11 da Excel per raggiungere l'editor VBA.

Menu Goto Tools -> Opzioni -> scheda Generale.

Impostare l'intercettazione degli errori di "rompere in caso di errori non gestite"

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

+0

Mi ricordo che uno, mi ha portato un po 'per capirlo troppo. –

+0

Grazie mille! Sapevo che era qualcosa di divertente che stavo trascurando. Ha funzionato perfettamente! Molte grazie :-D –

+0

Bella risposta. screenshot ftw. –