Macro para colorear filas conservando sus colores originales

Estoy buscando un macro que me resalte la fila en la que estoy ubicado pero una vez que la abandono que la fila conserve los colores originales que tenia y no que quede toda sin colores .

El macro que estoy utilizando es el siguiente :

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Static nFila As Integer
Dim RangoActual As Range
Dim stfFilas As Integer
Dim strColumnas As Integer

Set RangoActual = ActiveSheet.Range("A4").CurrentRegion
strfilas = RangoActual.Rows.Count
strColumnas = RangoActual.Columns.Count

If nFila <> Empty Then
Cells(nFila, 1).Resize(1, strColumnas).Interior.ColorIndex = x1none
End If

If ActiveCell.Row >= 2 And ActiveCell.Row <= strfilas And ActiveCell.Column <= strColumnas Then

nFila = ActiveCell.Row

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

End If
End Sub

Funciona muy bien salgo los siguientes errores que no logro encontrar =
En una tabla, me colorea solo hasta la fila 65, la 66 ya no la resalta.
Cuando tengo un color en alguna casilla y paso por la misma, luego de que salgo ya no vuelve a tener el color que tenia. Este es el problema principal.

2 respuestas

Respuesta
Respuesta

El problema con tu macro son las condiciones IF están mal planteadas, intenta con esta macro, el IF que coloque en la macro solo pondra color en el rango que tenga datos fuera de ese rango no colorara nada.

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Static nFila As Integer
Dim RangoActual As Range
Dim stfFilas As Integer
Dim strColumnas As Integer
Set RangoActual = ActiveSheet.Range("A4").CurrentRegion
strfilas = RangoActual.Rows.Count
strColumnas = RangoActual.Columns.Count
If nFila <> Empty Then
Cells(nFila, 1).Resize(1, strColumnas).Interior.ColorIndex = x1none
End If
nFila = ActiveCell.Row
pfila = RangoActual.Cells(1, 1).Row
ufila = RangoActual.Cells(RangoActual.Rows.Count, 1).Row
If nFila >= pfila And nFila <= ufila Then
Cells(ActiveCell.Row, 1).Resize(1, strColumnas).Interior.ColorIndex = 35
End If
set rangoactual=nothing
End Sub

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas