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 específica al encontrar un error.
Situación:
Ambos programas calculan la raíz cuadrada de los números.
Agregue las siguientes líneas de código al botón de comando 'Square Root 1'.
1. Primero, declaramos dos objetos Range. 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 = Selection
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 ciclo For Each Next para esto. Agregue las siguientes líneas de código:
For Each cell In rng
Next cell
Siguiente celular
Nota: rng y cell se eligen al azar aquí, puede usar cualquier nombre. Recuerde hacer referencia a estos nombres en el resto de su código.
4. Agregue la siguiente línea de código al bucle.
On Error Resume Next
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.
cell.Value = Sqr(cell.Value)
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 usar la instrucción 'En caso de error, reanudar a continuación', obtendría dos errores. Tenga cuidado de usar solo la declaración 'En caso de error, reanudar siguiente' cuando esté seguro de que ignorar los errores está bien.
Agregue las siguientes líneas de código al botón de comando 'Square Root 2'.
1. El mismo programa que Square Root 1, pero reemplace 'En caso de error, reanudar siguiente' con:
On Error GoTo InvalidValue:
Nota: InvalidValue se elige al azar aquí, puede usar cualquier nombre. Recuerde hacer referencia 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:
Exit Sub
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 encontrar un error (no olvide los dos puntos). Agregue la siguiente línea de código:
InvalidValue:
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.
MsgBox "can't calculate square root at cell " & cell.Address
5. Agregue la siguiente línea para indicarle a Excel VBA que reanude la ejecución después de ejecutar el código de error.
Resume Next
6. Salga del Editor de Visual Basic y pruebe el programa.
Resultado:
3/6 Completado! Obtenga más información sobre los errores de macro>
Siguiente capítulo: manipulación de cadenas