Como Poner Un Controlador De Errores Global en Vba Excel

Espero todos estéis bien. Tengo una macro que cuando salta un error se detiene bruscamente, se que con la instrucción On Error Resume Next se controlan estos errores, pero quisiera saber si esta instrucción puede ponerse en un sitio como global y así no declararla más en todo el programa.

2 respuestas

Respuesta
1

Si pones la instrucción al principio del programa, aplica para todo el programa.

Sub programa()
    On Error Resume Next
    '
    'instrucciones
    '
    '
End Sub

Pero lo más conveniente es que trates de identificar cuál es el problema y puedas controlarlo.

Por ejemplo, si vas a abrir un archivo y pones esta instrucción

Sub AbrirArchivo()
'
    archivo = "C:\varios\base de datos.xls"
    '
    'instrucciones
End Sub

Si el archivo no existe la macro se detiene.

Para que no suceda eso podemos controlarlo de esta forma:

Sub AbrirArchivo()
'
    archivo = "C:\varios\base de datos.xls"
    If Dir(archivo) <> "" Then
        Workbooks.Open archivo
    Else
        MsgBox "El archivo no existe"
        Exit Sub
    End If
    '
    'instrucciones
End Sub

Dependiendo del problema podemos buscar una solución.

Si quieres envíame tu código y dime dónde se detiene la macro, para buscar una posible validación y controlar el error.

Respuesta
1

No estoy 100% seguro pero casí seguro que NO se puede.

Por otro lado no me parece una buena propuesta, ya que en cada procedimiento podés controlar el error de una manera distinta, si bien vos pusiste una opción para controlar el error (resume next), en realidad hay varias más (que de hecho creo que son más útiles)

Un procedimiento que controle errores tendría una estructura similar a

Sub xx()
On Error GoTo hayError
'tu código
'...
Exit Sub
hayError:
 'acá haces algo cuando hay error
 'Resume (o Resume Next)
End Sub

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas