Para Dante, Macro Para limpiar celdas de determinadas hojas

Hola! Dante

Gracias por tu gran ayuda que nos brindas en el foro, hiendo con mi pregunta como realizar con la macro que me diste para limpiar celdas de hojas, pero que esta ves obvie el nombre que tenga las hojas.

Sub limpiar()
'Por.DAM
    rango = "N7,P7,R7,N12,P12,R12,Z11:AF14,J22:L27,J29:L29," & _
            "J35:L37,J42:L45,V42:X43,AC42:AC43,AC45,J51:L57," & _
            "AF49:AT59,AC21:AT26,AC28:AT39"
    For Each h In Sheets
        Select Case h.Name
            Case "limpia1", "limpia2", "Etc"
                h.Range(rango).ClearContents
        End Select
    Next
End Sub

 las celdas de las hojas que requiero limpiar siempre están cambiando de nombre.

1 respuesta

Respuesta
1

Disculpara pero no entiendo, ¿quieres qué limpie todas las hojas?

¿O qué limpie todas las hojas y el rango cambio?

Puedes poner con ejemplos lo que necesitas.

Hola! Dante

Gracias por la ayuda que me estas brindando,Tengo un libro que es de 35 Hojas cuatro de ellas son de datos, formulas, gráficos y lecturas; las otras 31 hojas restantes son idénticas pero con nombres de fecha del calendario, de estas hojas quiero limpiar ciertas celdas que son las siguientes:

rango = "N7,P7,R7,N12,P12,R12,Z11:AF14,J22:L27,J29:L29," & _
            "J35:L37,J42:L45,V42:X43,AC42:AC43,AC45,J51:L57," & _
            "AF49:AT59,AC21:AT26,AC28:AT39"

Te comento que las 31 hojas siempre están cambiando de nombre según fecha de calendario.

La macro quedaría así:

Sub limpiar()
'Por.Dante Amor
    rango = "N7,P7,R7,N12,P12,R12,Z11:AF14,J22:L27,J29:L29," & _
            "J35:L37,J42:L45,V42:X43,AC42:AC43,AC45,J51:L57," & _
            "AF49:AT59,AC21:AT26,AC28:AT39"
    For Each h In Sheets
        Select Case h.Name
            Case "datos", "formulas", "graficos", "lecturas"
            Case Else
                h.Range(rango).ClearContents
        End Select
    Next
End Sub

Cambia en la macro "datos", "formulas", "graficos", "lecturas", por los nombres reales de las hojas que no se deben limpiar.

No olvides valorar la respuesta.

Hola! Dante

Te comento que entre las 31 hojas que hay en mi libro hay hojas que realizan el acumulado de cada semana estas hojas realizan operaciones por eso te indicaba si se podía realizar el código con las hojas y no con el nombre que llevan las hojas, por decir el evento Hoja3.Select en este caso no le importa que nombre tenga la hoja. Disculpa si me estoy excediendo en pedir mas información, lo que quiero lograr con este tema es que se pueda trabajar con el "vba objetos" las hojas y no con el nombre que tienen las hojas.

Ah, para eso se utiliza el codename, te anexo la macro con la actualización

Sub limpiar()
'Por.Dante Amor
    rango = "N7,P7,R7,N12,P12,R12,Z11:AF14,J22:L27,J29:L29," & _
            "J35:L37,J42:L45,V42:X43,AC42:AC43,AC45,J51:L57," & _
            "AF49:AT59,AC21:AT26,AC28:AT39"
    For Each h In Sheets
        n = h.CodeName
        Select Case n
            Case "Hoja1", "Hoja2", "Hoja3", "Hoja4"
            Case Else
                h.Range(rango).ClearContents
        End Select
    Next
End Sub

Cambia "Hoja1", "Hoja2", "Hoja3", "Hoja4", por el codename o nombre de objeto de cada hoja.

¡Gracias! Dante

Disculpa por demorar en valorar tu respuesta, efectivamente la respuesta es perfecta era lo que realmente quería Muchísimas Gracias,  

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas