VBA – On Error Exit Sub
En VBA, puede programar su código para salir de un sub siempre que se encuentre un error. Para ello, utilice On Error GoTo y Exit Sub. On Error Goto le dice a VBA que cuando se encuentre un error «vaya a» una sección específica de su código. Ej:
On Error GoTo ErrorHandler
Desde esa sección puede decirle a VBA que Salga de Sub para salir del subprocedimiento:
ErrorHandler:
Exit Sub
Siga leyendo, para ver estas líneas de código en acción…
Salir de un Procedimiento en caso de Error en VBA
En este ejemplo, generaremos un error al dividir por cero:
i = 5 / 0
Vea el código completo a continuación. Cuando VBA lea el error, «pasará» a la sección de código ErrorHandler y saldrá:
Sub TestError()
Dim i As Integer
On Error GoTo ErrorHandler
i = 5 / 0
'Hacer algo
MsgBox i
Exit Sub
ErrorHandler:
MsgBox "Si ocurre un error entonces sale del procedimiento"
Exit Sub
End Sub
Para especificar el manejo de errores, primero necesita declarar la sentencia On Error GoTo. Debe ser declarada al principio de un Sub:
On Error GoTo ErrorHandler
Después de eso necesita declarar el código de manejo de errores. Normalmente se encuentra al final del código:
ErrorHandler:
MsgBox "Si hay un error, entonces salga del Sub"
Exit Sub
Añadimos el «Exit Sub» encima del ErrorHandler porque sólo queremos ejecutar el código del ErrorHandler si hay un error.
Exit Sub
ErrorHandler:
MsgBox "Si hay un error, entonces salga del Sub"
<exit Sub
End Sub
Si se ejecuta el Sub, se producirá un error debido a la división por cero. En ese momento se ejecutará el código de manejo de errores. Aparece el cuadro de mensaje y se sale del Sub.
Si quieres aprender a terminar la ejecución de código en VBA, haz clic en este enlace: VBA End Si quieres aprender a salir de un Sub o Función, haz clic en este enlace: VBA Exit Sub o Function
VBA Coding Made Easy
Stop searching for VBA code online. Learn more about AutoMacro - A VBA Code Builder that allows beginners to code procedures from scratch with minimal coding knowledge and with many time-saving features for all users!Learn More!