Resaltar celda activa en Excel VBA
A continuación vamos a ver un programa en Excel VBA que pone de relieve la fila y columna de la celda activa (celda seleccionada). Este programa va a sorprender e impresionar a su jefe.
Situación:
Cada vez que cambie la celda activa en Sheet1, una macro debe ser ejecutado. Usted puede lograr esto mediante la creación de un evento SelectionChange Hoja de trabajo.
-
Abra el Editor de Visual Basic.
-
Haga doble clic en Hoja1 (Sheet1) en el Explorador de proyectos.
-
Seleccione la hoja de trabajo de la lista desplegable izquierda. Elija SelectionChange de la lista desplegable-derecha.
Añadir las siguientes líneas de código al evento SelectionChange Hoja de trabajo:
-
Declaramos cuatro variables de tipo entero. Una llamada rowNumberValue, uno llamado columnNumberValue, uno llamado I y uno llamado j.
Dim rowNumberValue As Integer, columnNumberValue As Integer, i As Integer, j As Integer
-
En primer lugar, añadir la línea que cambia el color de fondo de todas las células a ‘Sin relleno’.
Cells.Interior.ColorIndex = 0
-
inicializar la variable rowNumberValue con el número de fila de la celda activa y la variable columnNumberValue con el número de columna de la celda activa.
rowNumberValue = ActiveCell.row columnNumberValue = ActiveCell.column
-
Destacamos la columna azul. Esto es: todas las células con número de fila menor o igual a rowNumberValue y número de columna igual a columnNumberValue
For i = 1 To rowNumberValue Cells(i, columnNumberValue).Interior.ColorIndex = 37 Next i
Explicación: para este ejemplo (véase la imagen de arriba), rowNumberValue es igual a 12 y columnNumberValue es igual a 8. Las líneas de código entre For y Next será ejecutado doce veces. Para i = 1, Excel VBA colores de la celda en la intersección de la fila 1 y la columna 8. Para i = 2, Excel VBA colores de la celda en la intersección de la fila 2 y la columna 8, etc.
Nota: en lugar de ColorIndex número 37 (azul), se puede utilizar cualquier número ColorIndex.
-
De manera similar, podemos destacar el azul fila. Esto es: todas las células con número de fila iguales a rowNumberValue y número de columna más pequeña o igual a columnNumberValue.
For j = 1 To columnNumberValue Cells(rowNumberValue, j).Interior.ColorIndex = 37 Next j
-
Ahora es el momento para probar el programa. Descargar el archivo de Excel y ver cómo la fila y columna de la celda activa se destacan cada vez que cambie la celda activa.