Borrar, datos segun color de Celda....incluso celdas combinadas

17/08/2006 - 06:50 por mamo66 | Informe spam
Hola,

Amigos, tengo un archivo de Excel, que tiene varias Hojas, desde el DIA
1, hasta el DIA 31.. cada una de estas son similares, y cada vez que
termina el Mes, osea llego a la hoja 31, debo eliminar algunos datos
desde el DIA 1 al DIA 30... pero lo que necesito es crear una macro
que me elimine el Contenido de las Celdas que tienen un color
determinado, ej. Gris. Es importante tener presente que existen celdas
que debo limpiar que estan combinadas.

Desde ya gracias por vuestra ayuda... y Felicitaciones a todos los
Caperusos del Excel

un abrazo

MAMO66

Preguntas similare

Leer las respuestas

#1 Juan M
17/08/2006 - 11:09 | Informe spam
Hola

... un archivo de Excel, que tiene varias Hojas, desde el DIA
1, hasta el DIA 31.. cada una de estas son similares,
y cada vez que termina el Mes
debo eliminar algunos datos
que me elimine el Contenido de las Celdas que tienen un color
determinado, ej. Gris. Es importante tener presente que existen celdas
que debo limpiar que estan combinadas.




prueba lo siguiente, creo que se ajusta a lo que quieres, salvo porque
separa las celdas combinadas
y que no has dado un rango al que quieres que busque, si es muy grande puede
que el proceso se demore demasiado

en el caso de que no quieras que descomponga las celdas combinadas comentas

un saludo
juan

Inicio codigo
Sub Test()
'Borra el contenido de determinadas celdas
'borra el color del interior de la celda
Dim Hoja As Worksheet
Dim MiRango As Range
Dim Celda As Range

For Each Hoja In ThisWorkbook.Worksheets
'Rango a modificar
Set MiRango = Hoja.Range("A1:A100")
For Each Celda In MiRango
With Celda
'color gris claro (25%)
If .Interior.ColorIndex = 15 Then
'si estan combinadas las separo
If .MergeCells Then
.MergeCells = False
End If
'elimina contenido
.ClearContents
'elimina formatos
.ClearFormats
End If
End With
Next Celda
Next Hoja
Set MiRango = Nothing

End Sub
Fin Codigo

"mamo66" escribió en el mensaje
news:
Hola,

Amigos, tengo un archivo de Excel, que tiene varias Hojas, desde el DIA
1, hasta el DIA 31.. cada una de estas son similares, y cada vez que
termina el Mes, osea llego a la hoja 31, debo eliminar algunos datos
desde el DIA 1 al DIA 30... pero lo que necesito es crear una macro
que me elimine el Contenido de las Celdas que tienen un color
determinado, ej. Gris. Es importante tener presente que existen celdas
que debo limpiar que estan combinadas.

Desde ya gracias por vuestra ayuda... y Felicitaciones a todos los
Caperusos del Excel

un abrazo

MAMO66

Respuesta Responder a este mensaje
#2 mamo66
17/08/2006 - 14:13 | Informe spam
Hola Juan,

Muchas gracias por tu pront arespuesta, la verdad es que no quiero
descomponer las celdas combinadas, ahora, como lo hago, dentro de la
hoja, varios rangos intercalados ?, por Ej. A1:A5, A15:A25, L2:L10, X2,
etc... Otra cosa, tango 2 alternativas para correr esta macro en Cada
Hoja (Dia1, Dia2, Dia3 Dia31), hacer una macro para que vaya a cada
hoja y la ejecute.. pero existe otra Forma mas practica ?...

Desde ya muy agradecido
MAMO66

Juan M ha escrito:

Hola

> ... un archivo de Excel, que tiene varias Hojas, desde el DIA
> 1, hasta el DIA 31.. cada una de estas son similares,
> y cada vez que termina el Mes
> debo eliminar algunos datos
> que me elimine el Contenido de las Celdas que tienen un color
> determinado, ej. Gris. Es importante tener presente que existen celdas
> que debo limpiar que estan combinadas.
>

prueba lo siguiente, creo que se ajusta a lo que quieres, salvo porque
separa las celdas combinadas
y que no has dado un rango al que quieres que busque, si es muy grande puede
que el proceso se demore demasiado

en el caso de que no quieras que descomponga las celdas combinadas comentas

un saludo
juan

Inicio codigo
Sub Test()
'Borra el contenido de determinadas celdas
'borra el color del interior de la celda
Dim Hoja As Worksheet
Dim MiRango As Range
Dim Celda As Range

For Each Hoja In ThisWorkbook.Worksheets
'Rango a modificar
Set MiRango = Hoja.Range("A1:A100")
For Each Celda In MiRango
With Celda
'color gris claro (25%)
If .Interior.ColorIndex = 15 Then
'si estan combinadas las separo
If .MergeCells Then
.MergeCells = False
End If
'elimina contenido
.ClearContents
'elimina formatos
.ClearFormats
End If
End With
Next Celda
Next Hoja
Set MiRango = Nothing

End Sub
Fin Codigo

"mamo66" escribió en el mensaje
news:
> Hola,
>
> Amigos, tengo un archivo de Excel, que tiene varias Hojas, desde el DIA
> 1, hasta el DIA 31.. cada una de estas son similares, y cada vez que
> termina el Mes, osea llego a la hoja 31, debo eliminar algunos datos
> desde el DIA 1 al DIA 30... pero lo que necesito es crear una macro
> que me elimine el Contenido de las Celdas que tienen un color
> determinado, ej. Gris. Es importante tener presente que existen celdas
> que debo limpiar que estan combinadas.
>
> Desde ya gracias por vuestra ayuda... y Felicitaciones a todos los
> Caperusos del Excel
>
> un abrazo
>
> MAMO66
>
Respuesta Responder a este mensaje
#3 Juan M
17/08/2006 - 15:08 | Informe spam
Hola

... no quiero descomponer las celdas combinadas
... varios rangos intercalados ?, por Ej. A1:A5, A15:A25, L2:L10, X2,
Otra cosa, tango 2 alternativas para correr esta macro en Cada
Hoja (Dia1, Dia2, Dia3 Dia31), hacer una macro para que vaya a cada
hoja y la ejecute.. pero existe otra Forma mas practica ?...



Te envio el codigo modificado, ahora solo borra el contenido de las celdas
combinadas y restablece el color de fondo.
En la zona de la definicion del rango puedes incluir mas rangos (hasta 30),
si no son excesivamente grandes y no hay celdas por el medio que tengan la
caracteristica distintiva para su borrado podrias extender el rango de tal
forma que sea solo uno (ej: range("A1:X20")).

La ultima parte no la he entendido bien ya que segun lo que pediste en la
consulta inicial la macro la ejcutabas al final del mes, entonces lo que
hace es pasarse por todas las hojas del libro, sin importarle el nombre,
busca en los rangos especificados y borra segun el criterio.

Si prefieres hacerlo por dia debes eliminar el primer for each, que se
refiere a las hojas del libro.

un saludo
juan

PD: revisa los comentarios del codigo

Inicio codigo

Sub Test()
'Borra el contenido de determinadas celdas
'borra el color del interior de la celda
Dim Hoja As Worksheet
Dim MiRango As Range
Dim Celda As Range

For Each Hoja In ThisWorkbook.Worksheets
'Rango a modificar admite hasta 30 rangos
With Hoja
Set MiRango = Union(.Range("A1:A5"), .Range("A15:A25"), _
.Range("L2:L10"))
End With
For Each Celda In MiRango
With Celda
'color gris claro (25%)
If .Interior.ColorIndex = 15 Then
If .MergeCells Then
'borra el contenido de la celda combinada
Hoja.Range(.MergeArea.Address).ClearContents
'elimina el color de relleno
Hoja.Range(.MergeArea.Address).Interior.ColorIndex =
xlNone
Else
'elimina contenido
.ClearContents
'elimina formatos
.ClearFormats
End If
End If
End With
Next Celda
Next Hoja
Set MiRango = Nothing

End Sub
fin codigo

Hola Juan,

Muchas gracias por tu pront arespuesta, la verdad es que no quiero
descomponer las celdas combinadas, ahora, como lo hago, dentro de la
hoja, varios rangos intercalados ?, por Ej. A1:A5, A15:A25, L2:L10, X2,
etc... Otra cosa, tango 2 alternativas para correr esta macro en Cada
Hoja (Dia1, Dia2, Dia3 Dia31), hacer una macro para que vaya a cada
hoja y la ejecute.. pero existe otra Forma mas practica ?...

Desde ya muy agradecido
MAMO66
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida