Jump to content

Copiar valores de celdas para pegarlos en otra página


Recommended Posts

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.

Link to comment
Share on other sites

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

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

Privacy Policy