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 dar con un error.
Situación:
Ambos programas calculan la raíz cuadrada de los números.
Glosario
Raíz cuadrada 1
Añade las siguientes líneas de código al botón de comando ‘Raíz Cuadrada 1’.
1. Primero, declaramos dos objetos de rango. Llamamos a los objetos Range rng y cell.
Dim rng As Range, cell As Range
2. Inicializamos el objeto Range rng con el rango seleccionado.
Set rng = Selección
3. Queremos calcular la raíz cuadrada de cada célula en un rango seleccionado al azar (este rango puede ser de cualquier tamaño). En Excel VBA, puedes usar el bucle For Each Next para esto. Añade las siguientes líneas de código:
Para cada célula en el rng La siguiente celda
Nota: el rng y la celda son elegidos al azar aquí, puedes usar cualquier nombre. Recuerda referirte a estos nombres en el resto de tu código.
4. Añade la siguiente línea de código al bucle.
Sobre el error Reanudar siguiente
5. A continuación, calculamos la raíz cuadrada de un valor. En el Excel VBA, podemos usar la función Sqr para esto. Añade la siguiente línea de código al bucle.
celda.Valor = Sqr(celda.Valor)
6. Salga del Editor Visual Basic y pruebe el programa.
Resultado:
Conclusión: Excel VBA ha ignorado las celdas que contienen valores inválidos como números negativos y texto. Sin usar la frase «On Error Resume Next» obtendrías dos errores. Ten cuidado de usar la frase «On Error Resume Next» sólo cuando estés seguro de que ignorar los errores está bien.
Raíz cuadrada 2
Añade las siguientes líneas de código al botón de comando ‘Raíz Cuadrada 2’.
1. El mismo programa que Raíz Cuadrada 1 pero reemplazando ‘On Error Resume Next’ por:
En Error Ir a Valor Inválido:
Nota: InvalidValue es elegido al azar aquí, puedes usar cualquier nombre. Recuerda referirte a este nombre en el resto de tu código.
2. Fuera del bucle For Each Next, primero agregue la siguiente línea de código:
Salida Sub
Sin esta línea, el resto del código (código de error) será ejecutado, ¡incluso si no hay ningún error!
3. Excel VBA continúa la ejecución en la línea que comienza con «InvalidValue:» al dar un error (no olvides los dos puntos). Añade la siguiente línea de código:
InvalidValue:
4. Mantenemos nuestro código de error simple por ahora. Mostramos un MsgBox con algún texto y la dirección de la celda donde ocurrió el error.
MsgBox «no puede calcular la raíz cuadrada de la célula» & dirección de la célula.
5. Añada la siguiente línea para indicar a Excel VBA que reanude la ejecución después de ejecutar el código de error.
Reanudar siguiente
6. Salga del Editor Visual Basic y pruebe el programa.
Resultado: