Cómo destacar la celda activa en una tabla

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]

(Visited 10.196 times, 1 visits today)
Categorías VBA

Uso de cookies

Este sitio web utiliza cookies para que usted tenga la mejor experiencia de usuario. Si continúa navegando está dando su consentimiento para la aceptación de las mencionadas cookies y la aceptación de nuestra política de cookies, pinche el enlace para mayor información ACEPTAR

Aviso de cookies