Resaltar fila y celda seleccionada en Excel usando vba y macros

Lo emocionante en Excel, en combinación con el lenguaje VBA es que podemos hace casi todo lo que se nos ocurra, desde lo más sencillo hasta lo más complejo. En las cosas sencillas, sin embargo, podemos aprender muchas cosas sobre objetos en Excel y cómo interactuar con ellos.

Antes que todo, los eventos en Excel

Los eventos se disparan cuando sucede alguna acción en Excel, ya sea activar hojas, guardar, imprimir, dar clic derecho, etc. En este Post nos enfocaremos en el evento SelectionChange, que se dispara cuando seleccionamos celdas en una hoja de cálculo y/o cuando cambiamos una selección en una hoja.

Ver video Resaltar fila y celda seleccionada

Suscríbete al canal de EXCELeINFO en YouTube para aprender más de Excel y macros.

Resaltar fila y celda seleccionada

En el archivo de ejemplo tenemos un procedimiento que resalta la fila donde está seleccionada la celda activa, además de resaltar también la celda elegida, tal como se muestra en la Figura 1.

Seleccionar fila y celda seleccionada en Excel

Figura 1. Seleccionar fila y celda seleccionada en Excel

Como lo comenté en el párrafo anterior, haremos uso del evento SelectionChange de la hoja de cálculo. Para agregar el evento, sigamos los siguientes pasos:

  • Damos clic derecho sobre la etiqueta de la hoja.
  • Elegimos Ver código.
  • En la parte superior derecha de la ventana izquierda damos clic en la lista desplegable.
  • De la lista elegimos Worksheet.
  • Se creará automáticamente el procedimiento que hará uso del evento SelectionChange.
Option Explicit
'
'EXCELeINFO
'MVP Sergio Alejandro Campos
'http://www.exceleinfo.com
'https://www.youtube.com/user/sergioacamposh
'http://blogs.itpro.es/exceleinfo
'http://www.exceleinfo.com/uso-de-colores-en-excel-con-macros/
'
Private Sub Worksheet_SelectionChange(ByVal Target As Range)

'Aquí va la macro...

End Sub

Entendiendo la macro

El único parámetro el evento SelectionChange es Target, que hace referencia a la celda o conjunto de celdas seleccionadas, que sería un rango. Como Target hace referencia a un rango de celdas, en su lugar usaremos ActiveCell, ya que sólo hace referencia a una sola celda, que es la que más adelante usaremos para darle un color de fondo.

En la primer sección definiremos las variables que usaremos. La variable nFila la definimos como estática, ya que deseamos guardar el número de la fila anteriormente seleccionada para posteriormente darle un color de fondo blanco (xlNone) y después resaltar la siguiente fila. La variable RangoActual hará referencia al rango en uso, la variable strFilas al número de filas del rango y la variable strColumnas al número de columnas del rango.

Static nFila As Integer

Dim RangoActual As Range
Dim strFilas As Integer
Dim strColumnas As Integer

Set RangoActual = ActiveSheet.Range("A7").CurrentRegion
strFilas = RangoActual.Rows.Count
strColumnas = RangoActual.Columns.Count

Si al valor de nFila es diferente a vacío, es decir, si la variable contiene un valor, ese valor deberá ser el número de fila anteriormente seleccionado y le dará un color de fondo neutro.

If nFila <> Empty Then

    Cells(nFila, 1).Resize(1, strColumnas).Interior.ColorIndex = xlNone

End If

Si la Celda Activa está entre la fila 2 y la última fila del rango activo y además no pasa de la última columna del rango activo, entonces resaltará la fila de color amarillo y la celda de color verde.

If ActiveCell.Row > 7 And ActiveCell.Row <= strFilas + 6 And ActiveCell.Column <= strColumnas Then

    nFila = ActiveCell.Row

    Cells(ActiveCell.Row, 1).Resize(1, strColumnas).Interior.ColorIndex = 6
    ActiveCell.Interior.ColorIndex = 43

End If

Para resaltar la fila y la Celda Activa haremos uso de las propiedad ColorIndex del rango o celda seleccionada.

Nota: para conocer los colores de fondo que se pueden utilizar para la propiedad ColorIndex, da clic aquí.

Descarga el archivo de ejemplo

Descargar el ejemplo Resaltar fila y celda seleccionada – EXCELeINFO.zip

You may also like...