• 👏 Bienvenido a nuestra comunidad Excel

    ¿Todavía no estás registrado? 😲

    Registrate gratis aquí y podrás:

    💪 Hacer preguntas a los expertos
    ⬇️ Descargar ejemplos y plantillas
    🏅 
    Acceder a contenidos premium

Problema con método PastSpecial

gorgijasp68

New member
Buenas tardes. Estoy haciendo una macro en excel para que me ayude a contabilizar en mi trabajo. Tengo un problema al utilizar el método PastSpecial ya que lo que quiero es que el resultado de una formula en una hoja de trabajo me la pase a otra hoja pero solo su valor. He utilizado el método PastSpecial (pegado especial) pero por mas que le doy vueltas me sigue dando error de código y no doy con la tecla. Os pongo un ejemplo de lo que hago por si alguien me puede ayudar.
Sub ACTIVO_DEBE()
For Each rngcell In Range("C1:C855")

If rngcell.HasFormula Then
rngcell.Value = rngcell.Value
End If
Next rngcell

'activo la hoja donde están mis datos
Sheets("DIARIO").Activate

'inicializo la variable j
j = 2

'comienzo el bucle
For i = 2 To 500
'para la cuenta 572
If Cells(i, "D").Value = "572" Then
'copio la fila entera y la pego
Range(Cells(i, "C"), Cells(i, "C")).Copy Destination:=Sheets("AC").Cells(j, "A").PasteSpecial xlPasteValues
es aqui donde me da error
'aumento la variable j para que vaya a la siguiente fila de la hoja

j = j + 1
End If
Next

Y así para todas las cuentas. El caso es que no se porque me da error . Si me pudierais ayudar os lo agradecería muchísmo. Gracias de nuevo
 

Antoni

Well-known member
No es necesario utilizar PasteSpecial, prueba con:

Código:
Sheets("AC").Cells(j, "A") = Cells(i, "C")


.
 

gorgijasp68

New member
No es necesario utilizar PasteSpecial, prueba con:

Código:
Sheets("AC").Cells(j, "A") = Cells(i, "C")


.
Buenos días. Muchas gracias Antoni. He probado tu solución y me sigue dando error......

Sheets("DIARIO").Activate

'inicializo la variable j
j = 2

'comienzo el bucle
For i = 2 To 500
'para la cuenta 572
If Cells(i, "D").Value = "572" Then
'copio la fila entera y la pego
Range(Cells(i, "C"), Cells(i, "C")).Copy Destination:=Sheets("AC").Cells(j, "A") = Cells(i, "C")

'aumento la variable j para que vaya a la siguiente fila de la hoja filtros

j = j + 1
End If
Next
 

gorgijasp68

New member
El maestro Antoni se refiere a que sustituyas la linea anterior, por esta:

Código:
Sheets("AC").Cells(j, "A") = Cells(i, "C")


Te recomiendo que siempre subas tu archivo de muestra.
Buenas tardes Dantte666.....gracias por tu comentario, pero esta solución que me aportas "machaca" la formula que tengo en la hoja de origen que es precisamente lo que no quiero (quiero que me mantengan las formulas que tengo en las celdas de la hoja de origen y me pegue los valores en la celda de la hoja destino). De ahí lo de utilizar el método PastSpecial. De todas formas muchas gracias por tu tiempo......Perdón se me olvidó subir el archivo.......lo adjunto.
 

Adjuntos

Última edición:
Arriba