Error 1004 excel error definido por la aplicación o el objeto

Quiero cortar y pegar datos de la hoja "Malos" a la hoja "CMalos", pero me marca el error 1004.

Dejo el código que tengo

Sub clases()
For i = 1 To (300 * 0.8)
valor = Val(Sheets("credito").Cells(i + 1, "Y"))
Sheets("Malos").Range(Cells(valor, "A"), Cells(valor, "U")).Select
Selection.Cut
Sheets("CMalos").Cells(i, "A").Select
ActiveSheet.Paste
Next

End Sub

Sino, quisiera que me ayudaran a crear una macro donde copie y pegue renglones de la misma longitud de una hoja a otra, y que después elimine el renglón copiado.

1 Respuesta

Respuesta
2

¿Quieres copiar todos los registros de "Malos" a "CMalos"? ¿Y después borrar todos los registros de "Malos"?

Lo que no entiendo es "renglones de la misma longitud"

Si solamente es copiar, pegar y borrar, prueba con lo siguiente:

 Sub copiar_pegar_borrar()
'Por Dante Amor
    u = Sheets("malos"). UsedRange. Rows(Sheets("malos"). UsedRange. Rows. Count). Row
    Sheets("malos").Rows(1 & ":" & u). Copy Sheets("CMalos"). Range("A1")
    Sheets("malos").Rows(1 & ":" & u).Delete
 End Sub

Prueba y me comentas.

'S aludos. Dante Amor. Recuerda valorar la respuesta. G racias

Revisando tu macro, me di cuenta que tienes otra hoja "credito", de esa hoja obtienes un valor, y luego ese valor lo consideras como el número de fila a copiar de "Malos", pero si ese valor no es un número o es 0, te envía el error 1004.

Si requieres obtener la fila de la hoja "credito", tendrías que revisar que tenga un número. ¿O explícame qué relación tiene la hoja "credito"?

Hola,

Te explico mejor..

Tengo la hoja de "Malos" 300 datos, de los cuales tomaré 200 de manera aleatoria, que son los números que tengo en la hoja "Credito" en la columna "X", de la celda "X2:X201", entonces por ejemplo, tengo el número 256, así que voy a la hoja "Malos" y elijo el renglón 256 y copio los datos de ese renglon, para pasarlo a la hoja "CMalos" en el primer renglón y quiero que al pasar ese dato a la hoja "CMalos", se borre de la hoja "Malos" para que solo me queden los que no se copiarán, (los 100 datos restantes), y así consecutivamente con los 200 datos a copiar.

Espero puedas ayudarme. Gracias. 

Nota: Ya revisé los números que tengo en la columna de la hoja "Credito" y todos son números entre 1 y 300. 

Perdón, es la columna "Y" de la hoja Crédito, y eso de la longitud de los renglones me refiero a que, todos los renglones de los datos abarcan de la columna A a la columna U, no hay celdas vacías.

H ol a: Te anexo la macro para copiar los renglones.

- Antes de ejecutar la macro, crea una hoja llamada "temp", es para realizar algunas operaciones.

- La macro copia la fila de la hoja "malos" y la pega en la fila 1 de la hoja "Cmalos", siempre la pega en la fila 1.

- Si quieres que pegue la fila en la siguiente fila, es decir, la primera fila en la 1, la siguiente en la 2, la que sigue en la 3, etc, entonces después de esta línea de la macro:

h2.Rows(fila).Delete

Agrega esta línea:

j = j + 1

la macro:

Sub copiar_pegar_borrar()
'Por Dante Amor
    Set h1 = Sheets("credito")
    Set h2 = Sheets("Malos")
    Set h3 = Sheets("Cmalos")
    Set h4 = Sheets("temp")
    '
    h3.Cells.ClearContents
    h1.Columns("Y").Copy
    h4.Columns("A").PasteSpecial xlValues
    h4.Range("A1").Value = "NUMS"
    u = h4.Range("A" & Rows.Count).End(xlUp).Row
    With h4.Sort
        .SortFields.Clear
        .SortFields.Add Key:=Range("A2:A" & u), _
            SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:=xlSortNormal
        .SetRange h4.Range("A1:A" & u)
        .Header = xlYes: .MatchCase = False: .Orientation = xlTopToBottom
        .SortMethod = xlPinYin: .Apply
    End With
    h4.Range("A1:A" & u).RemoveDuplicates Columns:=1, Header:=xlYes
    u = h4.Range("A" & Rows.Count).End(xlUp).Row
    j = 1
    For i = 2 To u
        fila = h4.Cells(i, "A")
        If fila <> "" And IsNumeric(fila) Then
            h2.Rows(fila).Copy h3.Rows(j)
            h2.Rows(fila).Delete
        End If
    Next
    MsgBox "fin"
End Sub

R ecuerda cambiar la valoración a la respuesta.

Sal u dos

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas