Problema al guardar libro y no salir o pulsar Ctrl-G las macros no se ejecutan

Te el siguiente código no sé cual puede ser el problema:

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
Dim w
    Set w = ActiveSheet
    With Application
        .EnableEvents = False
        .ScreenUpdating = False
    End With
    On Error Resume Next
    Sheets("CONFIGEMAIL").Activate
    If Err.Number = 0 Then
        w.Activate
        Cancel = True
        Exit Sub
    Else
        MsgBox "La hoja 'CONFIGEMAIL' ha sido eliminada, el libro no podrá ser guardado", _
        vbOKOnly + vbCritical, "Microsoft Excel"
        Cancel = True
    End If
   With Application
       .EnableEvents = True
       .ScreenUpdating = True
   End With
End Sub

1 respuesta

Respuesta
1

H o la: Te anexo la macro actualizada:

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
    Dim w
    Set w = ActiveSheet
    With Application
        .EnableEvents = False
        .ScreenUpdating = False
    End With
    On Error Resume Next
    Sheets("CONFIGEMAIL").Activate
    If Err.Number = 0 Then
        w.Activate
        Cancel = False
        'Exit Sub
    Else
        MsgBox "La hoja 'CONFIGEMAIL' ha sido eliminada, el libro no podrá ser guardado", _
        vbOKOnly + vbCritical, "Microsoft Excel"
        Cancel = True
    End If
    With Application
        .EnableEvents = True
        .ScreenUpdating = True
    End With
End Sub

Aunque no entiendo por qué desactivas los eventos y la actualización en pantalla.

Podría ser así:

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
    Dim w
    Set w = ActiveSheet
    On Error Resume Next
    Sheets("CONFIGEMAIL").Activate
    If Err.Number = 0 Then
        w.Activate
        Cancel = False
        MsgBox "Archivo guardado"
    Else
        MsgBox "La hoja 'CONFIGEMAIL' ha sido eliminada, el libro no podrá ser guardado", _
        vbOKOnly + vbCritical, "Microsoft Excel"
        Cancel = True
    End If
End Sub

Ahora que si quieres desactivar la pantalla, podría ser así:

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
    Dim w
    Set w = ActiveSheet
    Application.ScreenUpdating = False
    On Error Resume Next
    Sheets("CONFIGEMAIL").Activate
    If Err.Number = 0 Then
        w.Activate
        Cancel = False
        MsgBox "Archivo guardado"
        Application.ScreenUpdating = True
    Else
        MsgBox "La hoja 'CONFIGEMAIL' ha sido eliminada, el libro no podrá ser guardado", _
        vbOKOnly + vbCritical, "Microsoft Excel"
        Application.ScreenUpdating = False
        Cancel = True
    End If
End Sub

Entonces, si la hoja existe Cancel debe ser igual a False. Si no existe, Cancl = True.


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

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas