Una manera muy fácil de llamar la atención hacia una celda específica de nuestra hoja es estableciendo un color de fondo para la misma, pero si eso no fuera suficiente, podemos crear un efecto de color intermitente en la celda de manera que sea casi inevitable dirigir la mirada hacia ella.
Es muy probable que existan diferentes métodos para desarrollar este tipo de solución, y sería difícil explicarlos todos, así que en esta ocasión me enfocaré en crear el efecto de celda parpadeante utilizando los estilos de celda y un poco de programación en VBA. Empecemos por explicar un poco sobre dichos estilos de celda ya que será el primer paso en el desarrollo de nuestra solución.
Paso 1: Crear estilo de celda
Los estilos de celda los encontramos en la ficha Inicio dentro del grupo Estilos. Si haces clic en el botón Estilos de celda podrás ver una gama de estilos previamente definidos en Excel.
Tenemos la opción de utilizar alguno de los estilos definidos o si lo deseas, puedes crear tu propio estilo haciendo clic en la opción Nuevo estilo de celda que abrirá un cuadro de diálogo que nos permitirá configurar cada uno de los aspectos del nuevo estilo.
Cada una de las cajas de selección mostradas corresponde a una de las pestañas del cuadro de diálogo Formato de celdas el cual se abrirá al hacer clic en el botón Aplicar formato y nos permitirá indicar los valores específicos para el nuevo estilo. Sin embargo, para nuestro ejemplo no crearé un nuevo estilo, si no que crearé un estilo basado en otro ya existente y para eso haré clic derecho sobre el estilo llamado “Énfasis2” que se encuentra dentro de los estilos de celda predefinidos y seleccionaré la opción Duplicar dentro del menú emergente. Se mostrará el cuadro de diálogo Estilo y cambiaré el Nombre del estilo por “Intermitente”.
Es importante recordar este nuevo nombre de estilo porque haremos referencia a él dentro del código VBA. Finalmente debemos aplicar este nuevo estilo a la celda que tendrá el efecto de intermitencia.
Paso 2: Crear las macros
Sin más preámbulos, te mostraré el código de las subrutinas que nos ayudarán a aplicar un color intermitente en la celda de Excel. Posteriormente haré una explicación detallada del código.
Dim Siguiente As Date Dim EstiloColor As Double Dim Iniciado As Boolean Const EstiloNombre As String = "Intermitente" Const EstiloColor2 As Double = 0 Sub Iniciar() Siguiente = Now + TimeValue("00:00:01") IniciarColor With ActiveWorkbook.Styles(EstiloNombre) If .Interior.Color = EstiloColor Then .Interior.Color = EstiloColor2 Else .Interior.Color = EstiloColor End If End With Application.OnTime Siguiente, "Iniciar" End Sub Private Sub IniciarColor() If Iniciado = False Then EstiloColor = ActiveWorkbook.Styles(EstiloNombre).Interior.Color Iniciado = True End If End Sub Sub Detener() Application.OnTime Siguiente, "Iniciar", schedule:=False ActiveWorkbook.Styles(EstiloNombre).Interior.Color = EstiloColor End Sub
Primero explicaré el objetivo de las variables y constantes definidas en las primeras cinco líneas de código:
- Siguiente: Define el intervalo del siguiente parpadeo de la celda. Es del tipo Date porque almacenaré un valor de tiempo determinado entre parpadeos.
- EstiloColor: Guardará el color de fondo del estilo de celda que hayamos definido para dar el efecto de intermitencia.
- Iniciado: Esta variable me ayudará a saber si ya se ha inicializado el valor de la variable EstiloColor. En un principio el valor de esta variable será falso, pero en cuanto se asigne un valor a la variable EstiloColor, la variable Iniciado tendrá un valor verdadero.
- EstiloNombre: Esta constante será el nombre del estilo que creamos en al Paso 1 y que para nuestro ejemplo será el estilo “Intermitente”.
- EstiloColor2: Será el color con el que se alternará el color de fondo original del estilo de celda que para nuestro ejemplo será el color negro (0).
En el código mostrado previamente están definidas tres subrutinas y una de ellas es privada, lo que significa que no será mostrada en la lista de macros, así que comenzaré explicando la subrutina Iniciar que es donde comienza todo. La primera línea de código establece el valor de la variable Siguiente con el valor del momento actual (Now) más 1 segundo. Esto quiere decir que entre un cambio de color y el otro habrá 1 segundo de diferencia.
La segunda instrucción es el llamado a la subrutina privada IniciarColor, así que analicemos de una vez el código de dicha subrutina. Lo único que hacemos dentro de IniciarColor es evaluar el valor de la variable Iniciado para saber si necesitamos establecer el valor de la variable EstiloColor con el valor del color original del estilo de celda. Este procedimiento se ejecutará solo la primera vez ya que de inmediato establecemos el valor de la variable Iniciado igual a True y por lo tanto la próxima vez que se llame esta subrutina la evaluación resultará falsa.
Ahora que la variable EstiloColor ya tiene el color original del estilo de celda regresaremos a la subrutina Iniciar y podemos ver que la siguiente instrucción es precisamente la evaluación de la propiedad Color del estilo de celda. Si el valor del color de fondo es igual al color original, entonces lo cambiaré por el color definido en la variable EstiloColor2, de lo contrario regresamos al color original. Esta alternancia en el valor de la propiedad Interior.Color es precisamente lo que dará el efecto de color intermitente a la celda de Excel.
La subrutina Iniciar finaliza con la instrucción Application.OnTime que establece la nueva ejecución de la subrutina en el intervalo definido por la variable Siguiente. Puedes ver que hay una instrucción similar dentro de la subrutina Detener, con la diferencia de que se agrega el argumento schedule:=False para detener la ejecución cíclica de la subrutina Iniciar.
Es así como la subrutina Detener para por completo el parpadeo de la celda y finalmente restablece el color original del estilo de celda. Ahora que tenemos una mejor idea de lo que hacen las subrutinas, debemos dar el paso final para activar el color intermitente en la celda.
Color intermitente en una celda de Excel
Tal como lo sugerí en el primer paso, debemos aplicar el estilo de celda “Intermitente” a aquella celda que deseamos dar el efecto de parpadeo. Una vez hecho esto, solo restará ir a la ficha Vista, pulsar el botón Macros y finalmente elegir la macro Iniciar:
Al pulsar el botón Ejecutar la celda, o celdas, que tengan el estilo “Intermitente” comenzarán a parpadear, es decir a alternar su color de fondo tal como se observa en la siguiente animación:
Para detener la ejecución de la macro debemos ir de nueva cuenta a la ficha Vista, pulsar el botón Macros, seleccionar la macro Detener y pulsar el botón Ejecutar.
Observaciones importantes
En este ejemplo he elegido los colores rojo y negro como los colores alternantes. El color rojo fue elegido gráficamente al momento de crear el estilo de celda, pero el valor numérico del color negro fue colocado directamente en el código. Si quieres alternar con un color diferente al negro, será indispensable conocer su valor numérico y la única manera hacerlo en Excel es a través de código VBA.
Te recomiendo consultar el artículo Operaciones con colores en Excel donde encontrarás la función OBTENERCOLOR que te ayudará a obtener el valor numérico de cualquier color de fondo de una celda. Es muy importante recordar que los colores que podemos controlar con los métodos mostrados son aquellos que han sido aplicados con las herramientas de estilo de Excel y no funcionará con los colores aplicados por formato condicional ya que dicha información de color se guarda en propiedades muy diferentes.
Otra cosa que vale la pena mencionar es que en este ejemplo no se ha modificado el color de la fuente, pero puede llegar a ser necesario si dicho color no contrasta adecuadamente con el color de fondo que hayas elegido. En ese caso será necesario modificar también el color de la fuente establecido en el estilo de celda el cual estará guardado en la propiedad Font.Color.
Para no dejar dudas a esta última observación, en el archivo de descarga encontrarás un segundo libro de trabajo donde agrego las instrucciones VBA para cambiar también el color de la fuente de la celda que está parpadeando. Solo resta que descargues el libro de trabajo y compruebes por ti mismo los métodos que he mostrado para aplicar un color intermitente a una celda de Excel.