¿Cómo puedo cambiar el color de las celdas en una hoja de Excel usando el ciclo For Each, Next en macros?

Estoy intentando cambiar el color de ciertas celdas un una hoja de Excel con una macros. Quiero lograr que si hay celdas de cierto color (azul) se cambien a otro color (gris) usando el ciclo For each, Next. O si no de puede con ese ciclo si hay algún otro método en macros que me ayude a poder modificar el color de las celdas.

Lo que tengo hasta el momento es esto:

Private Sub CommandButton1_Click()

Dim Celda As CellFormat

For Each Celda In ActiveWorkbook.Sheets(1)
If Celda.Interior.ColorIndex = 47 Then
Celda.Interior.Color = VBA.RGB(242, 242, 242)
Else
Exit For
End If
Next Celda
End Sub

Pero al ejecutar la macro me marca "Se ha producido el error '438' en tiempo de ejecución: El objeto no admite esta propiedad o método".

Me gustaría me auxiliaran

2 Respuestas

Respuesta
1

Así quedaría tu macro:

Private Sub CommandButton1_Click()
Dim Celda As Range    
For Each Celda In ActiveWorkbook.Sheets(1).Range("A1:G10")
    If Celda.Interior.ColorIndex = 47 Then
        Celda.Interior.Color = RGB(242, 242, 242)
    End If
Next Celda
End Sub

Y no creo que sea necesario recorrer la hoja entera ... (más de 1 millón de celdas ??).

Lo recomendable es que acotes el bucle al rango de tus celdas con color, en mi ejemplo dejé A1:G10

Sdos.

Elsa

https://youtube.com/channel/UCSftX2GNQiTDDm0C6H9wEVA 

Respuesta
1

Si hay algún otro método en macros que me ayude a poder modificar el color de las celdas

Aquí otro método a considerar:

Private Sub CommandButton1_Click()
  With Application
    .FindFormat.Interior.ColorIndex = 47
    .ReplaceFormat.Interior.Color = RGB(242, 242, 242)
    Cells.Replace "", "", , , , , True, True
    .FindFormat.Clear
    .ReplaceFormat.Clear
  End With
End Sub

¡Gracias!  Es bueno tener otras alternativas para macros

Encantado de ayudar, gra cias por comentar.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas