Macro para mostrar mensaje personalizado en fórmulas con error usando SI.ERROR

Muchas de nuestras fórmulas pueden generar mensajes de error, ya sea por una división entre 0, un valor no encontrado, una referencia a una celda que ya no es válida.

Los mensajes de error que puede generar Excel son.

  1. #VALOR!
  2. #DIV/0!
  3. #¿NOMBRE?
  4. #N/A
  5. #¡REF!
  6. #¡NUM!
  7. #¡NULO!

Si vemos una hoja de cálculo con estos errores, a mi ver no es muy “estético” y muchos usuarios pueden pensar que la fórmula está mal escrita, cuando seguramente el error es por el cálculo que haceo o el valor que no encuentra.

La siguiente macro hace uso de la función SI.ERROR para mostrar un mensaje personalizado en lugar de mostrar un error de Excel.

Ejemplo

Tenemos una fórmula que hace un BUSCARV sobre una tabla de nombres y nos devuelve los valores de edad y ventas.

La fórmula utilizada se muestra a continuación.

=BUSCARV(G5,$A$2:$D$22,2,0)

Si el valor buscado sí devuelve un resultado, se mostrará así.

Buscarv

En cambio si el valor buscado no se encuentra en nuestra tabla, se mostrará el error #N/A (valor no encontrado).

Buscarv con error

Solución

Para mostrar un mensaje personalizado podremos utilizar la función SI.ERROR para indicar que si el resultado de la fórmula devuelve un error nos muestre un texto personalizado por nosotros y así ser tener más control sobre nuestra hoja de cálculo. La formula quedaría así.

=SI.ERROR(BUSCARV(G5,$A$2:$D$22,2,0),”Revise fórmula”)

El texto mostrado sería Revise fórmula.

Macro

El código que muestro a continuación nos ahorrará el trabajo de formar nuestra fórmula previniendo un error y aplicando un mensaje personalizado.

Código

Sub MensajeFormulaError()
'Se declaran las variables
Dim Longitud As Integer
Dim Fx As String
Dim Celdas As Range

Set Celda = ActiveCell

'La variable Longitud almacenará el largo de la fórmula
Longitud = Len(Celda.FormulaLocal)

'La variable Celda almacenará la fórmula quitanto el signo =
Fx = Right(Celda.FormulaLocal, Longitud - 1)

'Asigna a la celda activa la función SI.ERROR junto la fórmula que tenía
Celda.Formula = "=IFERROR(" & Fx & ",""Revise fórmula"")"
End Sub

Animación de la macro en ejecución

Mensaje personalizado para fórmulas con error

You may also like...