/ / Manejo de errores en Excel VBA

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.

Manejo de errores en Excel VBA

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.

Dim rng As Range, cell As Range

2. Inicializamos el objeto Range 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 bucle For Each Next para esto. Agregue las siguientes líneas de código:

For Each cell In rng

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.

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:

En error reanudar siguiente 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:

On Error GoTo InvalidValue:

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:

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 golpear 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 indicar 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:

En Error GoTo Resultado

En Error GoTo Resultado

En Error GoTo Resultado

Lea también: