Manejo de errores en Excel VBA
A continuación veremos dos programas en Excel VBA. Un programa simplemente ignora los errores. El otro programa continúa la ejecución en una línea especificada al golpear un error.
Situación:
Ambos programas calculan la raíz cuadrada de los números.
Raíz cuadrada 1
Agregue las siguientes líneas de código al botón de comando "Raíz cuadrada 1".
1. Primero, declaramos dos objetos Range. Llamamos a los objetos Range rng y cell.
2. Inicializamos el objeto Range con el rango seleccionado.
3. Queremos calcular la raíz cuadrada de cada celda en un rango seleccionado al azar (este rango puede ser de cualquier tamaño). En Excel VBA, puede usar el bucle For Each Next para esto. Agregue las siguientes líneas de código:
Next cell
Nota: aquí se seleccionan aleatoriamente rng y celda, puede usar cualquier nombre. Recuerde referirse a estos nombres en el resto de su código.
4. Agregue la siguiente línea de código al bucle.
5. A continuación, calculamos la raíz cuadrada de un valor. En Excel VBA, podemos usar la función Sqr para esto. Agregue la siguiente línea de código al bucle.
6. Salga del Editor de Visual Basic y pruebe el programa.
Resultado:
Conclusión: Excel VBA ha ignorado las celdas que contienen valores no válidos, como números negativos y texto. Sin utilizar la declaración "On Error Resume Next" obtendría dos errores. Tenga cuidado de usar solo la declaración "On Error Resume Next" cuando esté seguro de que ignorar los errores es correcto.
Raíz cuadrada 2
Agregue las siguientes líneas de código al botón de comando "Raíz cuadrada 2".
1. El mismo programa que Square Root 1 pero reemplaza "On Error Resume Next" con:
Nota: InvalidValue se elige al azar aquí, puede usar cualquier nombre. Recuerde referirse a este nombre en el resto de su código.
2. Fuera del bucle For Each Next, primero agregue la siguiente línea de código:
Sin esta línea, el resto del código (código de error) se ejecutará, incluso si no hay ningún error.
3. Excel VBA continúa la ejecución en la línea que comienza con "InvalidValue:" al golpear un error (no olvide los dos puntos). Agregue la siguiente línea de código:
4. Mantenemos nuestro código de error simple por ahora. Mostramos un MsgBox con algo de texto y la dirección de la celda donde ocurrió el error.
5. Agregue la siguiente línea para indicar a Excel VBA que reanude la ejecución después de ejecutar el código de error.
6. Salga del Editor de Visual Basic y pruebe el programa.
Resultado: