Error 1004 "Error en el método paste de la clase woorksheet"

Que tal tengo una macro que copia una celda ("H1") y la pega en las celdas vacías dependiendo de si la columna anterior tiene dato o no y luego copia toda la columna y la pega como valores, el problema es que al correr la macro ejecuta todo pero me da el error 1004 y no se a que se refiere, yo no se mucho de código pero genere este en base a diferentes macros que encontre, ojala pudieran ayudarme este es mi codigo

Sub p()
Dim celdavacia As Boolean
celdavacia = True
Range("H1").Select
Application.CutCopyMode = False
Selection.Copy
Range("C1").Select
Selection.End(xlDown).Select
ActiveCell.Offset(0, 1).Select
Do
If ActiveCell.Value = "" Then
ActiveSheet.Paste
ActiveCell.Offset(-1, 0).Select
Else
celdavacia = False
Columns("D:D").Select
Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Range("H4").Select
Application.CutCopyMode = False
End If
Loop
End Sub

La linea donde me marca error es la que esta en negritas

Respuesta
1

Según entiendo, si la celda de la columna D está en blanco, ¿entonces quieres poner el valor que tienes en la celda H1?

Si es correcto lo que entendí, cambia tu macro por cualquiera de las siguientes:

Sub macro1()
'Por.Dante Amor
    For i = 1 To Range("C" & Rows.Count).End(xlUp).Row
        If Cells(i, "D") = "" Then Cells(i, "D") = [H1]
    Next
End Sub

Sub Macro2()
'Por.Dante Amor
    On Error Resume Next
    Range("D1:D" & Range("C" & Rows.Count).End(xlUp).Row).SpecialCells(xlCellTypeBlanks) = [H1]
End Sub

Saludos.Dante Amor

hola Dante muchas gracias por responder, creo que no me explique bien, tengo una tabla con consecutivo, orden, delegación y ruta, los datos de consecutivo, orden y delegación los ingreso yo pero dependiendo de la delegación, en la columna "d" asigna la ruta esto lo hago a través de la función buscarv, el tema es que ahora este archivo lo utilizara alguien que no conoce de excel y me pidieron hacerle una macro por lo cual lo que intento hacer es que copie la formula de la celda "H1" , se posicione en la columna "c1" y valla a la ultima fila con dato, ya que esta ahí se mueva a la siguiente columna y  si la celda de la columna delegación tiene dato pegue la formula y suba una fila y revise si esta vacía y haga lo mismo hasta que encuentre una fila con dato, una vez concluido este proceso, quiero que seleccione toda la columna, la copie y la pegue con valores, con el código que puse hace todo pero me saca el error antes mencionado y no encuentro la forma de como se debe acomodar el código o que debo poner para que funcione correctamente, espero haberme explicado mejor. 

Dime qué es lo que necesitas. Pero no me expliques cómo quieres que se haga, es decir, la macro no necesariamente tiene que empezar de abajo hacia arriba, no te preocupes por las instrucciones de la macro.

O si puedes poner una imagen de cómo tienes los datos.

También entiendo que tienes una fórmula en la celda H1, entonces también pon la fórmula.

Ok lo que necesito es que al dar click al botón asignar ruta, dependiendo de si la celda "C" tiene dato, copie la fórmula en la celda "D" y cuando "c" ya no tenga dato, entonces copie todos los datos de "D" y los pegue como valores, esto es porque a veces cambian las delegaciones de ruta y si modifican la tabla ya no guardaría el dato correcto del día y en base a este se genera un reporte.

la formula con que pega es la siguiente:

=CONSULTAV(G1,'Ruta-Deleg'!E:F,2,0)

Te agradezco de antemano tu apoyo y espero ahora si haberme explicado.

Te anexo las opciones, utiliza cualquiera.

Sub macro1()
'Por.Dante Amor
    For i = 1 To Range("C" & Rows.Count).End(xlUp).Row
        Set b = Sheets("Ruta-Deleg").Columns("A").Find(Cells(i, "C"), lookat:=xlWhole)
        If Not b Is Nothing Then Cells(i, "D") = b.Offset(0, 1)
    Next
End Sub

Sub Macro2()
'Por.Dante Amor
    With Range("D2:D" & Range("C" & Rows.Count).End(xlUp).Row)
        .Formula = "=VLOOKUP(RC[-1],'Ruta-Deleg'!C1:C2,2,0)"
        .Value = .Value
    End With
End Sub


Sub Macro3()
'Por.Dante Amor
    With Range([C2], [C2].End(xlDown)).Offset(0, 1)
        .Formula = "=VLOOKUP(RC[-1],'Ruta-Deleg'!C1:C2,2,0)"
        .Value = .Value
    End With
End Sub

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas