Limpiar Celdas especificas en diferentes hojas de excel vba

Ante todo un gran saludo a todo ustedes expertos por la gran ayuda que nos brindan.

Hiendo a mi pregunta, me gustaría que me ayuden con un código en la que este limpia las celdas especificas de diferentes hojas, quisiera que fuera mas compacto; les adjunto el cogido.

Sub Limpiar_Celdas()

'LIMPIAR CELDAS
Hoja2.Select
Range("L6, J19:J24, J45:J50, N9, P9, R9").Select
Selection. ClearContents
Hoja3.Select
Range("L6, J19:J24, J45:J50, N9, P9, R9").Select
Selection. ClearContents
Hoja4.Select
Range("L6, J19:J24, J45:J50, N9, P9, R9").Select
Selection. ClearContents
Hoja5.Select
Range("L6, J19:J24, J45:J50, N9, P9, R9").Select
Selection. ClearContents
Hoja6.Select
Range("L6, J19:J24, J45:J50, N9, P9, R9").Select
Selection. ClearContents
Hoja7.Select
Range("L6, J19:J24, J45:J50, N9, P9, R9").Select
Selection. ClearContents
Hoja8.Select
Range("L6, J19:J24, J45:J50, N9, P9, R9").Select
Selection. ClearContents
Hoja9.Select
Range("L6, J19:J24, J45:J50, N9, P9, R9").Select
Selection. ClearContents
Hoja10.Select
Range("L6, J19:J24, J45:J50, N9, P9, R9").Select
Selection. ClearContents
Hoja11.Select
Range("L6, J19:J24, J45:J50, N9, P9, R9").Select
Selection. ClearContents
Hoja12.Select
Range("L6, J19:J24, J45:J50, N9, P9, R9").Select
Selection. ClearContents
Hoja13.Select
Range("L6, J19:J24, J45:J50, N9, P9, R9").Select
Selection. ClearContents
Hoja14.Select
Range("L6, J19:J24, J45:J50, N9, P9, R9").Select
Selection. ClearContents
Hoja15.Select
Range("L6, J19:J24, J45:J50, N9, P9, R9").Select
Selection. ClearContents
Hoja16.Select
Range("L6, J19:J24, J45:J50, N9, P9, R9").Select
Selection. ClearContents
Hoja17.Select
Range("L6, J19:J24, J45:J50, N9, P9, R9").Select
Selection. ClearContents
Hoja18.Select
Range("L6, J19:J24, J45:J50, N9, P9, R9").Select
Selection. ClearContents
Hoja19.Select
Range("L6, J19:J24, J45:J50, N9, P9, R9").Select
Selection. ClearContents
Hoja20.Select
Range("L6, J19:J24, J45:J50, N9, P9, R9").Select
Selection. ClearContents
Hoja21.Select
Range("L6, J19:J24, J45:J50, N9, P9, R9").Select
Selection. ClearContents
Hoja22.Select
Range("L6, J19:J24, J45:J50, N9, P9, R9").Select
Selection. ClearContents
Hoja23.Select
Range("L6, J19:J24, J45:J50, N9, P9, R9").Select
Selection. ClearContents
Hoja24.Select
Range("L6, J19:J24, J45:J50, N9, P9, R9").Select
Selection. ClearContents
Hoja24.Select
Range("L6, J19:J24, J45:J50, N9, P9, R9").Select
Selection. ClearContents
Hoja25.Select
Range("L6, J19:J24, J45:J50, N9, P9, R9").Select
Selection. ClearContents
Hoja26.Select
Range("L6, J19:J24, J45:J50, N9, P9, R9").Select
Selection. ClearContents
Hoja27.Select
Range("L6, J19:J24, J45:J50, N9, P9, R9").Select
Selection. ClearContents
Hoja28.Select
Range("L6, J19:J24, J45:J50, N9, P9, R9").Select
Selection. ClearContents
Hoja29.Select
Range("L6, J19:J24, J45:J50, N9, P9, R9").Select
Selection. ClearContents
Hoja30.Select
Range("L6, J19:J24, J45:J50, N9, P9, R9").Select
Selection. ClearContents
Hoja31.Select
Range("L6, J19:J24, J45:J50, N9, P9, R9").Select
Selection. ClearContents
Hoja32.Select
Range("L6, J19:J24, J45:J50, N9, P9, R9").Select
Selection. ClearContents

End Sub

Respuesta
1

Bueno no soy muy bueno en este tema de programación, e tratado de hacer mas compacto la macros que quería al final me quedo de esta manera; si a alguien le resulta practico esta macro aquí se las dejo.

Sub Limpiar_Celdas()

'Edgar

'Limpia celdas de diferentes hojas

Hoja1. Range("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") _

. ClearContents

Hoja2. Range("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") _
. ClearContents
Hoja3. Range("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") _
. ClearContents

End Sub

1 respuesta más de otro experto

Respuesta
2

Si vas a limpiar en todas las hojas de tu archivo, puede ser así:

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
        h.Range(rango).ClearContents
    Next
End Sub

***

Pero si son varias hojas y ciertas hojas no quieres limpiar, pero conoces el nombre de las hojas que no quieres limpiar puede ser así:

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 "Principal", "Resumen", "Etc"
            Case Else
                h.Range(rango).ClearContents
        End Select
    Next
End Sub

Cambia "Principal", "Resumen", "Etc" por el nombre de las hojas que no quieres que se limpien.

Gracias Dante Amor

Por las repuestas están muy bien, con la segunda macro que indicas es la que aplique a mi formulario pero hay un detalle, que las hojas que no quiero que se limpien siempre están cambiando de nombre según la fecha del mes.

Conoces el nombre de las que si quieres limpiar.

Entonces pon así

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

cambia "limpia1", "limpia2", "Etc" por los nombres de las hojas que quieres limpiar.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas