Opciones para cerrar

ColdGeorge

Active Member
Joined
Aug 21, 2012
Messages
407
Office Version
  1. 2016
Platform
  1. Windows
Hola amigos

Estoy buscando ofrecer al usuario opciones para 1) cancelar el proceso, 2) cerrar su archivo y conservar Excel abierto, y 3) cerrar su archivo y Excel, por alguna razón no logro conseguirlo, esto es lo que llevo, cualquier ayuda se agradecerá.

Code:
Private Sub Workbook_BeforeClose(Cancel As Boolean)
If MsgBox("¿Quieres cerrar el archivo?", vbYesNo, "Por favor confirma") = vbNo Then
    Cancel = True
    Exit Sub
        ElseIf MsgBox("¿Quieres cerrar Excel?", vbYesNo, "Confirma") = vbNo Then
            Cancel = True
            Exit Sub
            Application.ThisWorkbook.Close
                Else
                Application.Quit
End If
End Sub

Saludos, ColdGeorge
 
Last edited:

Excel Facts

Which lookup functions find a value equal or greater than the lookup value?
MATCH uses -1 to find larger value (lookup table must be sorted ZA). XLOOKUP uses 1 to find values greater and does not need to be sorted.
Puede tratar algo como si:

Code:
Private Sub Workbook_BeforeClose(Cancel As Boolean)

    If MsgBox("¿Quieres cerrar el archivo?", vbYesNo, "Por favor confirma") = vbNo Then
        Cancel = True
        Exit Sub
    End If
    
    If MsgBox("¿Quieres cerrar Excel?", vbYesNo, "Confirma") = vbNo Then
        Exit Sub
    Else
        Application.Quit
    End If
    
End Sub
Si no desea que Excel pregunte al usuario si desea guardar, agregue la línea:

Code:
    ThisWorkbook.Saved = True

(Perdon mi espanol, por favor! :confused: )
 
Upvote 0
Hola Eric

Gracias por tu ayuda, agregué la línea de código que recomiendas y quedó así:

Code:
Private Sub Workbook_BeforeClose(Cancel As Boolean)
If MsgBox("¿Quieres cerrar el archivo?", vbYesNo, "Por favor confirma") = vbNo Then
    Cancel = True
    Exit Sub
        ElseIf MsgBox("¿Quieres cerrar Excel?", vbYesNo, "Confirma") = vbNo Then
            Cancel = True
            Exit Sub
            Application.ThisWorkbook.Close
                Else
                Application.Quit
                ThisWorkbook.Saved = True
End If
End Sub

El resultado es, cuando presiono el botón cerrar, aparece el primer mensaje, si presiono NO todo queda igual, no pasa nada, si presiono Sí, se muestra el segundo mensaje preguntando si deseo cerrar Excel, si presiono NO, tampoco pasa nada, pero se debería cerrar el archivo, si presiono Sí se cierran el archivo y Excel.

Aún necesito ayuda, saludos, ColdGeorge
 
Upvote 0
Los otros cambios son necesarios tambien. Trate:

Code:
Private Sub Workbook_BeforeClose(Cancel As Boolean)

    If MsgBox("¿Quieres cerrar el archivo?", vbYesNo, "Por favor confirma") = vbNo Then
        Cancel = True
        Exit Sub
    End If
    
    ThisWorkbook.Saved = True
    If MsgBox("¿Quieres cerrar Excel?", vbYesNo, "Confirma") = vbYes Then Application.Quit
    
End Sub
 
Upvote 0
Los otros cambios son necesarios tambien. Trate:

Code:
Private Sub Workbook_BeforeClose(Cancel As Boolean)

    If MsgBox("¿Quieres cerrar el archivo?", vbYesNo, "Por favor confirma") = vbNo Then
        Cancel = True
        Exit Sub
    End If
    
    ThisWorkbook.Saved = True
    If MsgBox("¿Quieres cerrar Excel?", vbYesNo, "Confirma") = vbYes Then Application.Quit
    
End Sub

Hola Eric

Coloqué el código y este es el resultado: presiono el botón cerrar y el primer mensaje pregunta, ¿quieres cerrar el archivo?, al presionar NO, el proceso se interrumpe y no sucede nada, al presionar el botón Sí, el segundo mensaje pregunta, ¿quieres cerrar Excel?, al presionar NO, se cierra Excel y, obviamente el archivo, aquí es donde deseo cerrar el archivo y que Excel permanezca abierto. Al presionar Sí, se cierra el archivo y Excel.

Continuo buscando la manera de lograrlo, saludos, ColdGeorge
 
Upvote 0
¿Qué versión de Excel tiene usted? El código anterior funciona para mí. (Excel 2016 y Excel 2013) Cuando presiono "no" a la segunda pregunta, el archivo se cierra pero Excel permanece abierto. Podría haber un parámetro que tiene que cambiar.




 
Upvote 0
Hola Eric W

Yo tengo en mi equipo Excel 2016, la verdad no sé qué sucede, avíseme de qué cambiar para que las cosas funcionen bien, gracias.

ColdGeorge
 
Upvote 0
¿Hay otro código en el archivo?

Hola Eric

Enseguida se muestra otro código que contiene el libro,

Code:
Private Sub Workbook_Open()
MsgBox "Hola " & Application.UserName & vbCrLf & vbCrLf & _
"Este libro se llama " & Application.ThisWorkbook.Name & vbCrLf & vbCrLf & _
"Hoy es " & Date & vbCrLf & vbCrLf & _
"Y son las " & Time, , "Bienvenido"
End Sub

ColdGeorge
 
Upvote 0
Sólo para estar seguro, usted tiene el código exacto del mensaje # 5? Y cuando presiona "sí" o "no" a la segunda pregunta, sucede lo mismo, o recibe las dos acciones correctas, sólo por la respuesta equivocada?


Si es sólo para la respuesta equivocada, puede cambiar a vbYes a vbNo y debería funcionar.
 
Upvote 0

Forum statistics

Threads
1,214,889
Messages
6,122,097
Members
449,065
Latest member
albertocarrillom

We've detected that you are using an adblocker.

We have a great community of people providing Excel help here, but the hosting costs are enormous. You can help keep this site running by allowing ads on MrExcel.com.
Allow Ads at MrExcel

Which adblocker are you using?

Disable AdBlock

Follow these easy steps to disable AdBlock

1)Click on the icon in the browser’s toolbar.
2)Click on the icon in the browser’s toolbar.
2)Click on the "Pause on this site" option.
Go back

Disable AdBlock Plus

Follow these easy steps to disable AdBlock Plus

1)Click on the icon in the browser’s toolbar.
2)Click on the toggle to disable it for "mrexcel.com".
Go back

Disable uBlock Origin

Follow these easy steps to disable uBlock Origin

1)Click on the icon in the browser’s toolbar.
2)Click on the "Power" button.
3)Click on the "Refresh" button.
Go back

Disable uBlock

Follow these easy steps to disable uBlock

1)Click on the icon in the browser’s toolbar.
2)Click on the "Power" button.
3)Click on the "Refresh" button.
Go back
Back
Top