ActiveCell.PasteSpecial ...Error

Buenas Tardes:
Tengo el siguiente código que lo que hace es llevar unos datos de una hoja (Actualizar) a otra si r se encuentra en la otra hoja (reportes), r siempre va estar en la hoja reportes, por lo tanto el error no es de la función .Find... El problema es cuando quiero pegar los datos de la hoja actualizar a la hoja reportes... Ya agote mi conocimiento, por favor ayúdenme. Gracias
Dim r As Integer
r = ActiveSheet.Cells(1, 3)
If r > 0 And Range("A5") > 0 Then
    Range("A19:F19").Cut
    Range("I16").Select
    ActiveSheet.Paste
    Range("A16:N16").Cut
    Range("I13").Select
    ActiveSheet.Paste
    Range("A13:V13").Cut
    Range("I10").Select
    ActiveSheet.Paste
    Range("A10:AD10").Copy
    Sheets("Reportes").Select
    Columns("A:A").Select
    Selection.Find(What:=r, After:=ActiveCell, LookIn:=xlValues, LookAt:= _
        xlWhole, SearchOrder:=xlByColumns, SearchDirection:=xlNext, MatchCase:= _
        False, SearchFormat:=False).Activate
    Sheets("Reportes").Select
    ActiveCell.ClearContents
    ActiveCell.PasteSpecial xlPasteAll
    Sheets("Actualizar").Select

1 respuesta

Respuesta
1
Estas definiendo r como la cell(1,3) de la ActiveSheet (que es la hoja que tengas seleccionada en el momento de lanzar la macro, que intuyo que es Actualizar).
Debes cambiar
r = ActiveSheet.Cells(1, 3)
por
r = Sheets("Reportes").Cells(1, 3)
Para que siempre declare a r con la celda de la hoja Reportes.
Aparte entiendo que lo que estas copiando lo estas pegando también en la misma hoja seleccionada.
Te recomendaría en general que identificaras cada celda con el nombre de la hoja delante tipo Sheets("Actualizar"). Range("A10:AD10") en vez de ActiveSheet. Range("A10:AD10")
Seguramente estas utilizando la grabadora de macros, que es muy útil para aprender, pero cuando cambias de hojas, el siempre nombra los rangos, como rango de la hoja activa --> ActiveSheet. Range.
Espero haberte aclarado tus dudas. Cualquier consulta no dudes en preguntarme.
Cambie como me dijiste la forma de declarar r.gracias por el dato. Este pedazo del código es para poner en una sola fila los datos que voy a llevar a la hoja de reportes.
    Range("A19:F19").Cut
    Range("I16").Select
    ActiveSheet.Paste
    Range("A16:N16").Cut
    Range("I13").Select
    ActiveSheet.Paste
    Range("A13:V13").Cut
    Range("I10").Select
    ActiveSheet.Paste
despues copio los datos ordenados ....Range("A10:AD10").Copy
despues busco r en la hoja de reportes
   Selection.Find(What:=r, After:=ActiveCell, LookIn:=xlValues, LookAt:= _
        xlWhole, SearchOrder:=xlByColumns, SearchDirection:=xlNext, MatchCase:= _
        False, SearchFormat:=False).Activate
de aca en adelante surge mi duda en como pegar los datos en la fila de r desde la primera columna. gracias por tu tiempo =)
Hay algo que no entiendo.
Al principio del código compruebas que r sea mayor que 0 a la vez que la celda a5(no se de que hoja) también. Si esto ocurre entonces copias unos valores de un sitio para otro (entiendo que en la hoja Actualizar, que debe ser la hoja activa) y después te vas a la hoja Reportes, seleccionas la columna A y después seleccionas el rango r ¿para qué?
Prueba esto
Range("A10:AD10"). Copy
Sheets("Reportes").Range("d1").select.
Sheets("Reportes"). Range("d1"). Paste.
Pero sigo sin entender para que buscas r en la hoja de reportes de nuevo:
Después busco r en la hoja de reportes
   Selection.Find(What:=r, After:=ActiveCell, LookIn:=xlValues, LookAt:= _
        xlWhole, SearchOrder:=xlByColumns, SearchDirection:=xlNext, MatchCase:= _
        False, SearchFormat:=False).Activate
Comparar con 0 me sirve para diferenciar de 2 tipos de acciones que puede hacer la hoja(Actualizar). Si a5 y r son > 0 ordeno los datos según los necesito en la hoja de reportes, si no me voy a otra hoja diferente.
Después selecciono el rango de la columna A porque ahí se encuentra r. como ves la hoja se llama actualizar, entonces necesito cambiar ciertas celdas que son las que ordeno en la hoja de actualizar. Necesito reemplazar toda la fila a la que pertenece r con los datos actualizados, por eso necesito encontrar r y reemplazarlo. No se si me xomprendes :) otra vez gracias por tu tiempo.
Disculpa pero creo que necesitaría conocer el problema completo que quieres resolver para poder ayudarte.
Intenta describirlo completo e intentaré darte un código de lo que quieres hacer.
Valora esta respuesta, y me haces una directa con tu consulta.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas