Error 1004 - Error definido por la aplicación o por el objeto

Resuelto
Forp74 Mensajes publicados 7 Estado Miembro -  
Forp74 Mensajes publicados 7 Estado Miembro -
Hola,

Mi Configuración: W10 - Excel 2016.

No soy un especialista en VBA de Excel, pero "toco" un poco. Desde hace varios días estoy atascado con este maldito error 1004 con una instrucción Range(). He buscado en los foros, he probado muchas modificaciones, pero nada funciona, sigo teniendo este maldito error.

Si alguien tiene una solución, me ayudaría.

Lo que hace mi programa. Busco en un archivo filas de 4 campos, que copio ordenadas en una hoja. El segundo campo puede ser común a varias filas
Solo debo conservar las 3 primeras filas que tienen el mismo segundo campo. Las 4ta, 5ta... se eliminan.
Si solo hay dos o una fila con ese segundo campo, se eliminan.

Aquí está la parte del código donde se produce el error. El error ocurre en la línea 25. Y como no he podido probar más allá, supongo que también fallaría en las otras dos líneas 39 y 47.

Lo que he hecho como modificaciones:
1 He añadido la primera línea Worksheets(NoFeuille).Select, pero no ha cambiado nada. Sabiendo que NoFeuille es una variable entera definida antes.
2 En la línea 25, he añadido Worksheets(NoFeuille). antes de Range(...), pero no ha cambiado nada.

Estoy dando vueltas. Gracias por la ayuda.

Worksheets(NoFeuille).Select Range("G1").Select Dim n As Integer n = 0 ActiveCell.Offset(1, 0).Select n = n + 1 Do While ActiveCell.Offset(0, 0).Value <> "" ' Los 3 puntajes son del mismo club If ActiveCell.Offset(0, 1).Value = ActiveCell.Offset(1, 1).Value And ActiveCell.Offset(0, 1).Value = ActiveCell.Offset(2, 1).Value Then ' Calculamos el total de los 3 puntajes y lo colocamos en la primera línea del club ActiveCell.Offset(0, 4).Select ActiveCell.FormulaR1C1 = "=RC[-1]+R[1]C[-1]+R[2]C[-1]" 'ActiveCell.Offset(0, 4).Select ActiveCell.Offset(3, -4).Select n = n + 3 ' Buscamos los posibles 4tos, 5tos... puntajes para no seleccionarlos For n = 0 To 50 ActiveCell.Offset(n, 0).Select If ActiveCell.Offset(0, 1).Value = ActiveCell.Offset(-1, 1).Value Then ' Eliminación de celdas Worksheets(NoFeuille).Range(Cells(n, 7), Cells(n, 10)).Select Application.CutCopyMode = False Selection.Delete Shift:=xlUp Else GoTo Suivant End If Next Suivant: Else ' Las siguientes filas no son las 3 del mismo club ActiveCell.Offset(n, 0).Select ' Caso únicamente 2 filas If ActiveCell.Offset(0, 1).Value = ActiveCell.Offset(1, 1).Value And ActiveCell.Offset(0, 1).Value <> ActiveCell.Offset(2, 1).Value Then Range(Cells(n, 7), Cells(n + 1, 10)).Select Application.CutCopyMode = False Selection.Delete Shift:=xlUp Else End If ' Caso únicamente 1 fila If ActiveCell.Offset(0, 1).Value <> ActiveCell.Offset(1, 1).Value And ActiveCell.Offset(0, 1).Value <> ActiveCell.Offset(-1, 1).Value Then Range(Cells(n, 7), Cells(n, 10)).Select Application.CutCopyMode = False Selection.Delete Shift:=xlUp Else End If End If ActiveCell.Offset(n, 0).Select Loop 

3 respuestas

  1. Patrice33740 Mensajes publicados 8400 Fecha de registro   Estado Miembro Última intervención   1 784
     
    Hola,

    Es necesario revisar todo tu código y comenzar por eliminar todos los .Select y los Activecell de tu código, son innecesarios y son la primera fuente de problemas.

    En lugar de seleccionarla, basta con definir la celda de referencia, por ejemplo:
    Dim cel As Range Set cel = Worksheets(NoFeuille).Range("G2") Do While cel.Value <> "" ' Los 3 puntajes son del mismo club If cel.Offset(0, 1).Value = cel.Offset(1, 1).Value And cel.Offset(0, 1).Value = cel.Offset(2, 1).Value Then ' ....


    --
    Atentamente
    Patrice
    2