Copiar rangos discontinuos en VBA

Mediante VBA, los valores de la última fila con datos de las columna A, B, E, F, O, y pegarlos en otra hoja diferente. Os adjunto una imagen para que os hagáis una idea de qué es lo que quiero. He buscado distintas opciones, pero ninguna me vale, y ya no se me ocurre cómo podría hacerlo.

Gracias. Un saludo.

1 Respuesta

Respuesta
1

[Hola 

Te paso la macro


Valora la respuesta para finalizar saludos!

Sub copiar()
'
'Por Adriel Ortiz
'
    Set h1 = Sheets("Hoja1")
    Set h2 = Sheets("Hoja2")
    '
    u = h1.Range("A" & Rows.Count).End(xlUp).Row
    u2 = h2.Range("A" & Rows.Count).End(xlUp).Row + 1
    '
    h1.Range("A" & u & ":b" & u & ",E" & u & ":F" & u & ",O" & u).Copy
    h2.Range("A" & u2).PasteSpecial xlValues
    '
    Application.CutCopyMode = False
    MsgBox "Datos copiado", vbInformation
End Sub

Muchas gracias. Funciona (me pega los datos bien en la hoja "Libros leídos", pero me da un error. He modificado el código para adaptarlo a lo que yo necesito. Este es:

Sub Libro_terminado()
'
'Por Adriel Ortiz
'
    Set h1 = Sheets(Format(Now, "yyyy"))
    Set h2 = Sheets("Libros leídos")
    '
    u = h1.Range("A" & Rows.Count).End(xlUp).Row
    u2 = h2.Range("A" & Rows.Count).End(xlUp).Row + 1
    '
    h1.Range("A" & u & ":b" & u & ",E" & u & ":F" & u & ",O" & u & ":P" & u).Copy
    h2.Range("A" & u2).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Application.CutCopyMode = False
End Sub


El código de la segunda imagen tienes que quitarlo.

Lo otro de modificar la macro no entendí que cambios de deseas hacer haber si explicas el resultado deseado saludos!

¿No habría alguna manera de pausar ese código?

Lo puedes hacer así

Sub ejecutar()
'Accion1
macro1
'Accion2
'pasa 5 segundos ejecuta la macro2
'
If Application.Wait(Now + TimeValue("0:00:05")) Then
Call macro2
End If
End Sub

Gracias. Ya está solucionado. He utilizado este módulo para pausar el evento. Hay que crear uno para inhabilitarlo, y otro para habilitarlo. Seguidamente, en el código en el que quieras pausar todo evento, solo tienes que añadir el evento y listo.

https://www.gerencie.com/inhabilitar-eventos-de-excel-objeto-application-propiedad-enableevents.html 

https://ayudaexcel.com/ejecutar-procedimientos-sub/ 

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas