Necesito corrección en macro de Dante Amor. Error al ejecutar la macro dos veces seguidas.

Hola.

Me sale un error cuando ejecuto la macro dos veces seguidas.

Si ejecuto la macro y después tengo que modificar la hoja "PROPUESTA", al volver a ejecutar la macro, salen errores.

Se me ocurre, que al principio de la macro, elimine todas las hojas excepto "PROPUESTA" Y "datos", y después continúe con tu macro.

O quizás tengas una propuesta mejor.

¿Me puedes ayudar por favor?

Gracias y un saludo,

Sub CrearyCopiar()'Por.Dante Amor    Application.ScreenUpdating = False    Set h1 = Sheets("PROPUESTA")    For i = 7 To h1.Range("B" & Rows.Count).End(xlUp).Row        If h1.Cells(i, "B") <> "" Then            existe = False            For Each h2 In Sheets                If h2.Name = h1.Cells(i, "B") Then                    existe = True                    Exit For               End If            Next            If existe Then                u = h2.Range("B" & Rows.Count).End(xlUp).Row + 1                h1.Rows(i).Copy h2.Rows(u)            Else                h1.Copy after:=Sheets(Sheets.Count)                Set h3 = ActiveSheet                h3.Cells.Clear                h3.Name = h1.Cells(i, "B")                h1.Rows(1 & ":" & 6).Copy h3.Range("A1")                h1.Rows(i).Copy h3.Rows(7)            End If        End If    NextEnd Sub
Respuesta
1

Ya ejecuté la macro varias veces seguidas y no me envía ningún error, ¿puedes poner qué error te aparece?

También presiona el botón "Depurar" y dime cuál fila de la macro se pone en amarillo.

¡Gracias! 

Perdona. Me salía un error relacionado con la protección de la hoja.

A parte en cada ejecución, se dupicaban las líneas en cada hoja nueva creada.

Lo he solucionado eliminando primero todas las hojas, a patir de la hoja3, y después continuando con tu macro, así siempre empieza de cero. A lo mejor es una chapucilla pero funciona.

No obstante, si crees que se puede mejorar el código, dímelo, por favor.

Muchas gracias por tu ayuda.

Private Sub CommandButton1_Click()
'Por.Dante Amor
    Application.ScreenUpdating = False
    ActiveSheet.Unprotect ""
    'Borrar hojas creadas
    Application.DisplayAlerts = False
        c = Sheets.Count
        For a = 3 To c
            Worksheets(3).Delete
        Next a
    'Creación de hojas
    Application.DisplayAlerts = True
    Set h1 = Sheets("PROPUESTA")
    For i = 7 To h1.Range("B" & Rows.Count).End(xlUp).Row
        If h1.Cells(i, "B") <> "" Then
            existe = False
            For Each h2 In Sheets
                If h2.Name = h1.Cells(i, "B") Then
                    existe = True
                    Exit For
               End If
            Next
            If existe Then
                u = h2.Range("B" & Rows.Count).End(xlUp).Row + 1
                h1.Rows(i).Copy h2.Rows(u)
            Else
                h1.Copy after:=Sheets(Sheets.Count)
                Set h3 = ActiveSheet
                h3.Cells.Clear
                h3.Name = h1.Cells(i, "B")
                h1.Rows(1 & ":" & 6).Copy h3.Range("A1")
                h1.Rows(i).Copy h3.Rows(7)
            End If
        End If
    Next
        Sheets("PROPUESTA").Select
        ActiveSheet.Protect ""
End Sub

Si estás ejecutando la macro desde la hoja "Propuesta" está bien, pero si no, cambia esto

ActiveSheet. Unprotect ""

Por esto

Sheets("PROPUESTA"). Unprotect ""

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas