2010-08-09 21 views
5

No tengo mucha experiencia con VBA, pero a veces lo uso en el trabajo. Recientemente, me he encontrado con un problema que no debería suceder, y que ni mi jefe ni yo podemos darnos cuenta.VBA Error Handling no funciona en Excel

Básicamente, el problema es que la propiedad ApplicationDisplayAlerts está establecida en True de manera predeterminada y no se puede cambiar por algún motivo. Posiblemente relacionado es que cuando aparece un error, siempre muestra la alerta End | Debug | Help y nunca golpea el manejo de error aplicado.

Estoy ejecutando Office 2010 de 64 bits en una máquina con Windows 7 de 64 bits. Sin embargo, no creo que sea un problema de plataforma, ya que he probado en múltiples plataformas diferentes, sistemas operativos y permutaciones de software y ninguna otra máquina tiene este error; sólo mía.

He creado un código de muestra en caso de que alguien haya encontrado esto antes o tenga alguna idea. Lo único que se me ocurre es que tengo algo instalado en mi máquina que está causando esto. Pero después de una purga de programa y muchos reinicios, no estoy más cerca de descifrar lo que podría ser.

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 

El error es lanzado en el tercer enumeración de la for-loop (como debería). El tipo de error es irrelevante, lo que es relevante es que recibo el error y nunca golpeo el controlador de errores.

Cualquier sugerencia o ayuda sobre esto sería muy apreciada.

¡Muchas gracias!

Respuesta

21

Presione ALT + F11 desde Excel para acceder al editor de VBA.

Vaya al menú Herramientas -> Opciones de elemento -> ficha General.

Establecer la interceptación de errores a "Interrumpir en errores no controlados"

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

+0

Recuerdo que uno, me tomó un tiempo para averiguarlo también. –

+0

¡Muchas gracias! Sabía que era algo divertido que estaba pasando por alto. Eso funcionó perfectamente! Muchas gracias :-D –

+0

Buena respuesta. captura de pantalla ftw. –