Macro excel VBA modificar código para copiar y pegar en otra hoja

Tengo un problema a la hora de copiar y pegar un rango de celdas en otra hoja. Si solo tengo que copiar una línea (en caso de que solo exista una) coge el rango de toda la hoja (no solo desde la fila 8 columna B) copia hasta abajo, incluidas las celdas en blanco y se me satura la macro. No sucede esto si hay dos líneas, este es el código, no sé qué sucede... ¿alguna sugerencia? Gracias.

Sheets("ORIGEN"). Activate
       Range(Range("B8"), Range("B8").End(xlDown)).Select
       Range(Selection, Selection.Offset(, 4)).Select ' Para que abarque todas las columnas
       Selection. Copy
       Sheets("Destino"). Activate
       ActiveSheet.Paste Range("A" & Range("A" & Rows. Count).End(xlUp). Row + 1) 'Pegar los datos en la primera fila libre desde "A"

1 Respuesta

Respuesta
4

Con lo siguiente podrías copiar y pegar

Sub prb()
  Sheets("ORIGEN"). Range("B8", Sheets("ORIGEN").Range("B" & Rows. Count).End(3)). Resize(, 5). Copy Sheets("Destino").Range("A" & Rows. Count).End(3)(2)
End Sub

Pero si no hay registros a copiar, entonces tendrías que validar si al menos hay un registro:

Sub copiarDatos()
  Application.ScreenUpdating = False
  With Sheets("ORIGEN")
    If .Range("B8") <> "" Then
      .Range("B8", .Range("B" & Rows.Count).End(3)).Resize(, 5).Copy Sheets("Destino").Range("A" & Rows.Count).End(3)(2)
    Else
      MsgBox "No hay registros a copiar"
    End If
  End With
  Application.ScreenUpdating = True
  Application.CutCopyMode = False
End Sub

¡Gracias, Dante! Voy a probarlo y te comento! lo del validado de si existían registros ya lo tenía (me ayudaste con eso una vez), pero no sabía cómo hacer para que en el caso de que solo existiera una línea no copiara todo el rango de celdas en blanco hasta abajo, hasta ahora no se había dado el caso. Lo pruebo y te digo!

Ya lo he probado! funciona perfecto!!! mil gracias como siempre ;).

Encantado de ayudarte, grac ias por comentar.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas