Otros blogs de Témpora

domingo, 29 de abril de 2018

La instrucción Resume para control de errores en VBA - Excel

Cuando se produce un error en Excel, se genera un objeto llamado Err que contiene un número de error. La instrucción Resume (en cualquiera de sus formas) reinicia el valor de Err a 0 (cero) y Excel deja de estar bajo una situación de excepción. Resume tiene tres formas sintácticas: Resume, Resume Next y Resume Etiqueta.

Resume
 
La instrucción Resume lleva la línea de ejecución al punto donde se produjo el error. Debe utilizarse fuera de la línea de código donde está la instrucción On Error. Como podemos ver en el ejemplo siguiente, esto se utiliza para dar una nueva oportunidad a la línea que produjo el error:


Debemos interpretar en el código que si no existe una hoja llamada NuevaHoja, se producirá un error y la línea de ejecución salta a la etiqueta Error. Entonces, se comprueba el número de error y si, efectivamente, ha sido por culpa de la inexistencia de la hoja, se crea una nueva. La instrucción Resume se encarga de devolver la línea de ejecución al lugar donde se produjo el error y, por lo tanto, todo continuará correctamente.

Resume Next
 
La instrucción Resume Next Se utiliza siempre inmediatamente después de On Error, Por lo tanto, hablamos de On Error Resume Next. Esta modalidad de Resume omite la línea que provoca el error y enruta la ejecución a la línea siguiente a la que provocó el error. La utilización de esta instrucción debe hacerse cuando ya sabemos que el procedimiento no provoca errores en condiciones normales y queremos que el programa no se detenga y no muestre ningún error bajo una eventualidad que no podemos conocer a priori.

Resume Etiqueta
 
La instrucción Resume Etiqueta lleva la línea de ejecución a una etiqueta que podemos situar en cualquier parte del código. Esto se utiliza si no tenemos intención de solucionar el problema que causó el error y lo que deseamos es continuar con la ejecución en algún punto concreto. Utilizando On Error Resume Etiqueta reinciamos Err = 0, a diferencia del uso de On Error GoTo.



 

José Manuel Pomares Medrano





1 comentario: