1. AyudaExcel utiliza cookies. Si continuas utilizando AyudaExcel, estás aceptando la utilización de nuestras cookies. Más información.
  2. ¡Bienvenid@ a AyudaExcel! El foro más visitado sobre Excel en habla hispana.

    Si esta es tu primera visita, asegúrate de revisar los temas de la sección Utilización y Funcionamiento para familiarizarte con las funciones del foro. Si deseas publicar mensajes, será necesario que te Registres para que puedas dejar respuestas y crear tus propios mensajes, recuerda que es gratuito.

Pendiente Macros para pegar datos de hoja a hoja correlativamente

Tema publicado en 'Macros y programación VBA' iniciado por jechulandia, 3 Ene 2012.

  1. jechulandia

    jechulandia Nuevo Usuario

    Registrado:
    21 Dic 2011
    Mensajes:
    16
    Me Gusta recibidos:
    0
    Hola amigos de ayuda excel tengo un pequeño problemita, tengo un libro que se llama copiar que lo uso de ejemplo ,en la hoja1 celda A1 y B1 escribo datos y en esta misma hoja tengo un macros asociado a un boton que copia los datos de la celda A1 y B1 en la hoja2 del mismo libro , pero lo que pasa es que el problema ocurre cuando mando datos nuevos estos se sobreescriben en el anterior ya pegado, lo que quisiera es que se pegue pero debajo del ultimo pegado. No se si el problema ocurra aca :
    miFila = Sheets("hoja2").Range("A65536").End(xlUp).Row + 1

    esta linea deberia hacer que se pegue debajo luego probe con esta :
    miFila=Sheets("hoja2").
    Range("A"&Rows.Count).End(xlUp).Row + 1​


    Les dejo mi ejemplo para una mejor guia.

    Adjuntos:

    • copiar.rar
      Tamaño de archivo:
      15,5 KB
      Visitas:
      20
    Editado por moderación: 3 Ene 2012
  2. Toldeman

    Toldeman Moderador Staff AyudaExcel

    Registrado:
    11 May 2008
    Mensajes:
    3.041
    Me Gusta recibidos:
    147
    Hola.

    prueba con esta macro:

    PHP:
    Sub copiar()
    Dim ul As Long
    ul 
    Hoja2.Range("A" Rows.Count).End(xlUp).Row
    Hoja2
    .Select
    Range
    ("A" ul 1) = Hoja1.Range("A1")
    Range("B" ul 1) = Hoja1.Range("B1")
    Hoja1.Select
    Range
    ("A1:B1") = ""

    End Sub

    Un saludo.
  3. LUISFECAB

    LUISFECAB Usuario

    Registrado:
    4 Ene 2009
    Mensajes:
    623
    Me Gusta recibidos:
    3
    Aquí otra forma muy similar.
    CÓDIGO:
    [COLOR=#000080]Sub[/COLOR] CopiarLimpiar()
    'obtener ultima fila con datos de la tabla
    [COLOR=#000080] Dim[/COLOR] miFila [COLOR=#000080]As Integer[/COLOR]
    'considerando que la col A tendrá datos . + 1 para obtener la primer fila libre.
    
    [COLOR=#000080] If[/COLOR] Sheets("hoja2").Range("A1") = [COLOR=#000080]Empty Then[/COLOR]
    
        miFila = 1
        
    [COLOR=#000080]     Else[/COLOR]
        
        miFila = Sheets("hoja2").Range("A" & Rows.Count).End(xlUp).Row + 1
    
    [COLOR=#000080] End If[/COLOR]
    
    'selecciona hoja con datos a copiar
    'primer dato en primer col
    Sheets("hoja1").Select
    ActiveSheet.Range("A1").Copy Destination:=Sheets("hoja2").Cells(miFila, 1)
    'segundo dato en col B
    ActiveSheet.Range("B1").Copy Destination:=Sheets("hoja2").Cells(miFila, 2)
    'así con cada dato
    'si los datos están en 1 fila utilizar 1 sola instrucción indicando el rango completo para copiarlo en la col 1
    
    'limpiar celdas
    ActiveSheet.Range("A1") = ""
    ActiveSheet.Range("B1") = ""
    'así con todas las celdas
    End Sub
    Es una modificación de tu código.
    Última edición: 3 Ene 2012
  4. jechulandia

    jechulandia Nuevo Usuario

    Registrado:
    21 Dic 2011
    Mensajes:
    16
    Me Gusta recibidos:
    0
    Ups muchachos tuve un error ,en mi original tengo los datos uno debajo del otro(Verticalmente) y esos datos debo pasarlos horizontal a mi hoja 2.
    Si fueran tan amables porfavor estoy utilizando el primer codigo que me dejaron .


    Última edición: 3 Ene 2012
  5. Toldeman

    Toldeman Moderador Staff AyudaExcel

    Registrado:
    11 May 2008
    Mensajes:
    3.041
    Me Gusta recibidos:
    147
    Hola.

    tendrias que espeficicar que casillas de la hoja1 estan en vertical, suponiendo que fueran A1 y A2 el codigo te quedaria así:

    PHP:
     Sub copiar()
    Dim ul As Long
    ul 
    Hoja2.Range("A" Rows.Count).End(xlUp).Row
    Hoja2
    .Select
    Range
    ("A" ul 1) = Hoja1.Range("A1")
    Range("B" ul 1) = Hoja1.Range("A2")
    Hoja1.Select
    Range
    ("A1:A2") = ""
    End Sub 
    Un saludo.

Compartir esta página