Como ya hemos explicado en artículos anteriores, una manera de ejecutar un macro es mediante el seguimiento de un determinado evento. En el ejemplo a continuación vamos a usar como evento el seleccionar una celda de una tabla. Cada vez que se seleccione una celda vamos a cambiar el color de fondo de la celda seleccionada y de toda la columna y la fila en la que se encuentra.
Ejemplo 1 – Destacar la celda activa en una tabla
- Primero abrimos el Editor de Visual Basic (VBE).
- A continuación seleccionamos la hoja en la que se encuentra nuestra celda objetivo.
- Después seleccionamos en la esquina superior izquierda de la ventana de código la opción “worksheet”.
- En la esquina superior derecha de la ventana código seleccionamos la opción “SelectionChange”.
- El siguiente código aparecerá de manera automática una vez seleccionemos la opción “SelectionChange”:
Private Sub Worksheet_SelectionChange(ByVal Target As Range) End Sub
- En nuestro ejemplo hemos creado una tabla en el rango B10:L20 y nuestro objetivo es que al seleccionar una celda de esa tabla cambia el color de fondo de todas las celdas en esa fila y en esa columna, tal como se muestra en la imagen a continuación:
- El código es el siguiente:
Private Sub Worksheet_SelectionChange(ByVal Target As Range) Dim columna, fila As Integer Dim i As Long If Not Intersect(Target, Range("C11:L20")) Is Nothing Then Range("B10:L20").Interior.Color = RGB(255, 255, 255) ActiveCell.Interior.Color = RGB(255, 0, 0) fila = ActiveCell.Row columna = ActiveCell.Column For i = 10 To fila - 1 ActiveSheet.Cells(i, columna).Interior.Color = RGB(180, 100, 100) Next i For i = 2 To columna - 1 ActiveSheet.Cells(fila, i).Interior.Color = RGB(180, 100, 100) Next i Else Range("B10:L20").Interior.Color = RGB(255, 255, 255) End If End Sub
- En el código mostrado arriba, después de definir las variables, tenemos la construcción de un condicional con una doble negación: “If not ….. Is Nothing”. Basicamente, lo que quiere decir esta línea de código es que si existe intersección entre la celda seleccionada y el rango “C11:L20” se deberá ejecutar el código que sigue a la condición.
- Una vez evaluada la condición y en caso de que se cumpla, cambiaremos el color de fondo de todas las celdas de la tabla a blanco. La siguiente línea del código cambia el color de fondo de la celda seleccionada a rojo y posteriormente tenemos dos bucles que cambian el color de fondo de las celdas que se encuentran en la misma fila y columna que la celda seleccionada.
- Por último como parte del condicional tenemos un “Else” que hace que en caso que seleccionemos una celda fuera de la tabla se vuelvan a pintar todas las celdas de blanco.
Bonus track: Descarga estos ejemplos
[sociallocker]
Ya se que estos ejemplos son muy golosos. Por eso te los dejo aquí para que te los puedas descargar y probar tú tranquilamente en tú ordenador
Ejemplo de como destacar la celda activa en una tabla
[/sociallocker]