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.
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í.