A continuación, veremos un programa en Excel VBA que resalta la fila y la columna de la celda activa (celda seleccionada). Este programa sorprenderá e impresionará a su jefe.
Situación:
Cada vez que cambiamos la celda activa en Sheet1, se debe ejecutar una macro. Puede lograr esto creando un evento de cambio de selección de hoja de trabajo.
1. Abra el Editor de Visual Basic .
2. Haga doble clic en Sheet1 (Sheet1) en el Explorador de proyectos.
3. Elija Hoja de trabajo en la lista desplegable de la izquierda. Elija SelectionChange de la lista desplegable de la derecha.
Agregue las siguientes líneas de código al evento de cambio de selección de hoja de trabajo:
4. Declaramos cuatro variables de tipo Integer. Uno llamado rowNumberValue, uno llamado columnNumberValue, uno llamado iy uno llamado j.
Dim rowNumberValue As Integer, columnNumberValue As Integer, i As Integer, j As Integer
5. Primero, agregamos la línea que cambia el color de fondo de todas las celdas a 'Sin relleno'.
Cells.Interior.ColorIndex = 0
6. Inicializamos 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
7. Destacamos la columna azul. Es decir: todas las celdas con un número de fila menor o igual a rowNumberValue y el 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 (ver imagen arriba), rowNumberValue es igual a 12 y columnNumberValue es igual a 8. Las líneas de código entre For y Next se ejecutarán doce veces. Para i = 1, Excel VBA colorea la celda en la intersección de la fila 1 y la columna 8. Para i = 2, Excel VBA colorea la celda en la intersección de la fila 2 y la columna 8, etc.
Nota: en lugar del número 37 de ColorIndex (azul), puede utilizar cualquier número de ColorIndex.
8. De manera similar, resaltamos la fila azul. Es decir: todas las celdas con un número de fila igual a rowNumberValue y un número de columna menor o igual a columnNumberValue.
For j = 1 To columnNumberValue
Cells(rowNumberValue, j).Interior.ColorIndex = 37
Next j
9. Ahora es el momento de probar el programa. Descargue el archivo de Excel y vea cómo la fila y la columna de la celda activa se resaltan cada vez que cambia la celda activa.
3/6 Completado! Aprenda mucho más sobre eventos>
Siguiente capítulo: Matriz