Saltar al contenido

Copiar valores de celdas para pegarlos en otra página


Recommended Posts

publicado

Buenas tardes.

Tengo una macro hecha para que copie los datos de una hoja y los pegue en otra. (nombrehoja1 es una variable que recibe el nombre de la hoja en la que se desea copiar los valores) Adjunto el código:

Sub Copiar()
Sheets(nombrehoja1).Range("G25").Copy
Sheets("Hoja administrador2").Range("A2").PasteSpecial xlValues
Application.CutCopyMode = False
Sheets(nombrehoja1).Range("G42").Copy
Sheets("Hoja administrador2").Range("A3").PasteSpecial xlValues
Application.CutCopyMode = False
Sheets(nombrehoja1).Range("G59").Copy
Sheets("Hoja administrador2").Range("A4").PasteSpecial xlValues
Application.CutCopyMode = False
Sheets(nombrehoja1).Range("G76").Copy
Sheets("Hoja administrador2").Range("A5").PasteSpecial xlValues
Application.CutCopyMode = False
End Sub

Pero tengo dos problemas.

El primero es que no es muy eficiente este código, ya que más adelante me gustaría copiar más datos y tendría muchas líneas de código y, a parte, cuando ejecuto la macro puedo ver los valores que va copiando. Es decir, estoy en la hoja A, y en esa hoja tengo la macro. Al activarla veo cómo copia los valores de nombrehoja1 (aun estando en la hoja A). Espero explicarme.

Entonces me gustaría saber cómo puedo realizar copias de valores de celdas disjuntas (solo valores, no fórmulas) y pegarlas en otra hoja de manera eficiente y sin que me salga ese error.

Gracias de antemano.

publicado

Prueba el adjunto y comenta

Private Sub CommandButton1_Click()
    Hoja1.Range("G25,G42,G59,G76").Copy _
    Hoja2.Cells(Rows.Count, "a").End(xlUp).Offset(1)
End Sub

 

GIF.gif

Prueba 1.xlsm

publicado
En 27/6/2021 at 22:30 , JSDJSD dijo:

Prueba el adjunto y comenta

Private Sub CommandButton1_Click()
    Hoja1.Range("G25,G42,G59,G76").Copy _
    Hoja2.Cells(Rows.Count, "a").End(xlUp).Offset(1)
End Sub

 

GIF.gif

Prueba 1.xlsm 20.71 kB · 1 descarga

Perdona por no responder antes, no había podido pasarme por el foro.

Me ha servido, muchas gracias ^^

publicado

Prueba con esto, que es independiente del los datos que tengas (he visto que hay datos cada 17 filas). Es decir recoge los datos que haya cada 17 filas y luego los copia seguido en la otra hoja. Deja de recoger datos cuando ya no hay nada en la n*17 fila. Te adjunto fichero que funciona con ese código incluido. Veras que solo hay en numero de datos que tu indicas, pero si añades más 17 filas más abajo también te lo copiará.

Sub Copiar()
    Dim datos As String
    Dim contador As Integer
    Application.ScreenUpdating = False
    Sheets("nombrehoja1").Select
    Range("G25").Select
    cont = 0
    datos = ""
    Do While ActiveCell.Offset(cont * 17, 0) <> ""
        datos = datos & ActiveCell.Offset(cont * 17, 0).FormulaR1C1 & "-"
        cont = cont + 1
    Loop
    contenido = Split(datos, "-")
    Sheets("Hoja administrador2").Select
    Range("A2").Select
    For i = 0 To cont - 1
        ActiveCell.Offset(i, 0).FormulaR1C1 = contenido(i)
    Next i

End sub

copia datos.xlsm

Archivado

Este tema está ahora archivado y está cerrado a más respuestas.

×
×
  • Crear nuevo...

Información importante

Echa un vistazo a nuestra política de cookies para ayudarte a tener una mejor experiencia de navegación. Puedes ajustar aquí la configuración. Pulsa el botón Aceptar, si estás de acuerdo.