Macro para copiar rango de celdas y que no copie las columnas ocultas

Deseo una macro que copie un rango de celdas y no coipe las columnas que estan ocultas

Ejemplo:

Copiar rango A4:H4

Pero las columnas B, D, G estan ocultas

Cuando pegue va a traer solo los valores visibles en A, C, E, F, H

¿Hay un código que sea genérico independiente de cual celda esté oculta y cual visible?

2 Respuestas

Respuesta
1

H o l a:

Para copiar las celdas visibles, se tiene que poner la propiedad xlceltypevisible:

Sub CopiarRango()
'Por.Dante Amor
    Sheets("Hoja1").Range("A4:H4").SpecialCells(xlCellTypeVisible).Copy Sheets("Hoja2").Range("A4")
End Sub

En el ejemplo que te estoy poniendo estoy copiando el rango de A4:H4 de la hoja1 y lo estoy pegando en la hoja2 a partir de la celda A4.

Avísame si tienes que copiarlo de otra hoja o pegarlo en otra hoja y en otra celdas, o quieres que se pegue como valores.


Perfecto!!!!

Como sería para copiarlo en otra hoja y sólo valores?

De esta forma:

Sub CopiarRango()
'Por.Dante Amor
    Sheets("Hoja1"). Range("A4:H4"). SpecialCells(xlCellTypeVisible). Copy
    Sheets("Hoja2"). Range("A4"). PasteSpecial xlValues
    Application.CutCopyMode = False
End Sub

Listo ya apliqué la fórmula pero ahora tengo otro problema, la hoja de donde se copia los datos está protegida y dice que ese comando no se puede utilizar en hojas protegidas.

Hay una manera de resolver eso sin tener que mandar a desbloquear los archivos?

Queda así, cambia en la macro Hoja1 y Hoja2 por los nombres de tus hojas.

Cambia "abc" por el password que tenga tu hoja2

Sub CopiarRango()
'Por.Dante Amor
    Sheets("Hoja1"). Range("A4:H4"). SpecialCells(xlCellTypeVisible). Copy
    Sheets("Hoja2"). Unprotect "abc"
    Sheets("Hoja2"). Range("A4"). PasteSpecial xlValues
    Sheets("Hoja2"). Protect "abc"
    Application.CutCopyMode = False
End Sub
Respuesta
1

Para tu ejemplo este sería un modo:

Sub solovisibles()
'x Elsamatilde
Range("A4:H4").SpecialCells(xlCellTypeVisible).Copy Destination:=Sheets(6).Range("A1")
End Sub

Por supuesto que en lugar de Sheets(6) colocarás el nombre de tu hoja destino ;)

Sdos!

Te recuerdo que la consulta sigue abierta. No olvides valorarla para quitarla de las pendientes.

Sdos!

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas