Código colorear rango de celdas

Tengo este código para colorear una fila de celdas al seleccionar cualquiera de ese rango.

Mi problema es que al posicionarme en otra fila, la fila antes seleccionada me cambia el color a ninguno.

Yo tengo en tres columnas con diferentes formatos (no condicional) y quisiera que luego de seleccionar la fila al ir a otra fila quede en esas columnas el formato que tenia.

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

Static Fila_Ant As Integer

On Error Resume Next

If Target.Row = Fila_Ant Then Exit Sub

Range("b" & Fila_Ant & ":h" & Fila_Ant).Interior.ColorIndex = xlColorIndexNone

Range("b" & Target.Row & ":h" & Target.Row).Interior.ColorIndex = 20

Fila_Ant = Target.Row

End Sub

Desde ya gracias/

1 respuesta

Respuesta
1

Prueba lo siguiente:

En un modulo nuevo he declarado estas variables como Public:

Public Color_Ant, Fila_Ant As Byte

Y luego en el modulo de la pestaña donde quieres hacer los cambios he puesto esta macro:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim Fila_Nueva As String
On Error Resume Next
Fila_Nueva = ActiveCell.Row
If Fila_Nueva = Fila_Ant Then Exit Sub
Range("b" & Fila_Ant & ":H" & Fila_Ant).Interior.ColorIndex = Color_Ant
Color_Ant = ActiveCell.Interior.ColorIndex
Range("b" & Fila_Nueva & ":H" & Fila_Nueva).Interior.ColorIndex = 20
Fila_Ant = ActiveCell.Row
End Sub

Pruébalo y dime, a ver si es lo que necesitas.

gracias por tu respuesta

insertando las variables como public en un modulo y ese código en la hoja cuando recorro las filas pasa lo siguiente

yo tengo en columna A color rojo, en columna B color azul y dependiendo desde que columna este desplazando ese rango de filas, pinta todas las columnas de un mismo color

desde ya muchas gracias, saludos

Si las columnas son de diferente color, prueba esta macro, quita todo lo anterior y pon lo de ahora. He contado con que las columnas a resaltar cuando se selecciona una celda son de la B a la H

Public Color1, Color2, Color3, Color4, Color5, Color6, Color7, Fila_Ant As Byte

Y en la hoja:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim Fila_Nueva As String
On Error Resume Next
Fila_Nueva = ActiveCell.Row
If Fila_Nueva = Fila_Ant Then Exit Sub
Range("b" & Fila_Ant).Interior.ColorIndex = Color1
Range("c" & Fila_Ant).Interior.ColorIndex = Color2
Range("d" & Fila_Ant).Interior.ColorIndex = Color3
Range("e" & Fila_Ant).Interior.ColorIndex = Color4
Range("f" & Fila_Ant).Interior.ColorIndex = Color5
Range("g" & Fila_Ant).Interior.ColorIndex = Color6
Range("h" & Fila_Ant).Interior.ColorIndex = Color7
Color1 = Range("b" & Fila_Nueva).Interior.ColorIndex
Color2 = Range("c" & Fila_Nueva).Interior.ColorIndex
Color3 = Range("d" & Fila_Nueva).Interior.ColorIndex
Color4 = Range("e" & Fila_Nueva).Interior.ColorIndex
Color5 = Range("f" & Fila_Nueva).Interior.ColorIndex
Color6 = Range("g" & Fila_Nueva).Interior.ColorIndex
Color7 = Range("h" & Fila_Nueva).Interior.ColorIndex
Range("b" & Fila_Nueva & ":H" & Fila_Nueva).Interior.ColorIndex = 20
Fila_Ant = ActiveCell.Row
End Sub

Pruébala y dime algo, :)

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas