Utilizar bandas de colores para localizar la celda activa

Se aplica a
Microsoft Office Excel 2003

Logotipo de Mr. Excel Este artículo es una adaptación de otro artículo de MrExcel.com. Visite el sitio Web MrExcel.com para obtener más sugerencias e información.

Para ayudar a encontrar visualmente el puntero de celda activa, ¿hay alguna forma de hacer que aparezca temporalmente una banda de color en la fila y columna actuales?

La siguiente es una solución elegante para esta cuestión.

 Importante   Esta solución utiliza la característica de formato condicional y Visual Basic para Aplicaciones(VBA), y sobrescribe los formatos condicionales existentes en la hoja de cálculo. No utilice este método si la hoja de cálculo ya posee formatos condicionales.

Qué hace:

  • El código resalta la fila y columna actuales, hasta el puntero de celda, en color amarillo claro.
  • Cuando se desplaza a una nueva celda, los resaltados se van moviendo junto con el puntero de celda.
  • Si el puntero de celda se coloca en una celda que ya es de color amarillo, el resaltado cambia de color.

Ejemplo

Este efecto se consigue utilizando el controlador de eventos Worksheet_SelectionChange. En el módulo de código Hoja de cálculo debe pegarse el código siguiente. Cada vez que el puntero de celda se coloque en una nueva ubicación, el código eliminará todos los formatos condicionales de la hoja de cálculo y asignará inmediatamente un nuevo formato condicional a las celdas de la fila y columna actuales.

Este método presenta dos inconvenientes. En primer lugar, como se indicaba anteriormente, no es adecuado si ya se tienen formatos condicionales. En segundo lugar, el código suele borrar el contenido del Portapapeles, por lo que se hace prácticamente imposible copiar y pegar mientras el código se está ejecutando.

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim iColor As Integer

'// Note: Don't use if you have conditional
'// formatting that you want to keep

'// On error resume in case user selects a range of cells
On Error Resume Next
iColor = Target.Interior.ColorIndex

'// Leave On Error ON for Row offset errors
If iColor < 0 Then
    iColor = 36
Else
    iColor = iColor + 1
End If

'// Need this test in case Font color is the same
If iColor = Target.Font.ColorIndex Then iColor = iColor + 1
Cells.FormatConditions.Delete

'// Horizontal color banding
With Range("A" & Target.Row, Target.Address) 'Rows(Target.Row)
    .FormatConditions.Add Type:=2, Formula1:="TRUE"
    .FormatConditions(1).Interior.ColorIndex = iColor
End With

'// Vertical color banding
With Range(Target.Offset(1 - Target.Row, 0).Address & ":" & _
     Target.Offset(-1, 0).Address)  'Rows(Target.Row)
    .FormatConditions.Add Type:=2, Formula1:="TRUE"
    .FormatConditions(1).Interior.ColorIndex = iColor
End With

End Sub
 
 
Corresponde a:
Excel 2003