Macro de MsgBox con 3 botones

En ThisWorkBook tengo una amcro para MsgBox con 3 botones; Si No Cancelar o Abortar

Quiero con esta macro para MsgBox que; sea cual sea la forma de como cerrar Excel, me pregunte

¿Desea eliminar hoja Global? No o Si según el boton que yo pise = ya lo hace bien

Independientemente por X razón (si es posible) decirle No o Si (elimine o No la hoja) pero seguir con el libro abierto cancelando toda demás ejecución de la macro para seguir trabajando en el.

En el siguiente párrafo es donde está mi enredo

Si piso Cancelar, frenar, interrumpa toda ejecución de la macro Y NO seguir el curso de cierre del libro y aplicación, preguntando o no si deseo guardar cambios y se cierre el libro. Aquí es donde más yo me freno totalmente, visto no poseer capacidad para anular toda ejecución de la macro más, el cierre del libro con la aplicación.

Si mando cerrar el libro y la aplicación al pisar Sí, me está cerrando el libro, pero dejando la aplicación abierta. Si en realidad quiero cerrar todo, es también la aplicación, no solo el libro.

Private Sub Workbook_BeforeClose(Cancel As Boolean)
Dim Pregunta As Integer ' o string
Pregunta = MsgBox("Deseas Eliminar Hoja Global?", vbYesNoCancel + vbInformation, "Advertencia") 'Aqui podria ser también vbYesNoAbort
    Select Case Pregunta
        Case Is = 6
            MsgBox "Presionaste Sí Eliminar"
        Sheets("Global").Delete
        Case Is = 7
            MsgBox "Presionaste No Eliminar"
                Exit Sub
        Case Else
            MsgBox "Camcelaste la operacion"
            ActiveWorkbook.Close False: Exit Sub 
        End Select
End Sub

1 respuesta

Respuesta
1

Prueba lo siguiente:

Private Sub Workbook_BeforeClose(Cancel As Boolean)
  Dim Pregunta As Variant
  Pregunta = MsgBox("Deseas Eliminar Hoja Global?", vbYesNoCancel + vbInformation, "Advertencia")
  Select Case Pregunta
      Case Is = vbYes
        MsgBox "Presionaste Sí Eliminar"
        On Error Resume Next
        Application.DisplayAlerts = False
        Sheets("Global").Delete
        ActiveWorkbook.Save
      Case Is = vbNo
        MsgBox "Presionaste No Eliminar"
      Case vbCancel
        MsgBox "Camcelaste la operacion"
        Cancel = True
  End Select
End Sub

Hola Dante, nuevamente por aquí, ¿com ote ha ido hombre? Espero que bien.

Pues respondiéndote quiero decirte esto:

Gracias por tarde responder, pero es que no recibí notificación de esta y otras preguntas, tanto mías como de otros usuarios ni tampoco respuestas a las cuales estoy inscripto.

Gracias por responder amigo

Probaré y t respondo así este disponible de trabajo

Dante aquí nuevamente para comentarte lo siguiente:

Tendría que; 1ª verificar si la hoja Global existe, si existe seguir con la 1ª pregunta,

¿Deseas Eliminar Hoja Global?

si no existe;

MsgBox "Vá a cerrar el libro y salir de la aplicacion, ¿Guardar los cambios, Cerrar y salir o No?"

vbYesNo

Si responde Salir(Si) guarda, Cierra y sale.

Si responde No(Cancel =True); no Guarda, no cierra ni sale.

Por ahora es lo que se me ocurre

Estoy pidiendo ayuda para esto, por si hay alguna equivocación cerrando el libro-aplicación y tener opción para devolverse sin que nada suceda posterior al pisar en POR o otra forma de salida

Prueba lo siguiente:

Private Sub Workbook_BeforeClose(Cancel As Boolean)
  Dim Pregunta As Variant, existe As Variant, sName As String
  sName = "Global"
  existe = Evaluate("ISREF('" & sName & "'!A1)")
  If existe = True Then
    Pregunta = MsgBox("Deseas Eliminar Hoja Global?", vbYesNoCancel + vbInformation, "Advertencia")
    Select Case Pregunta
      Case Is = vbYes
        MsgBox "Presionaste Sí Eliminar"
        On Error Resume Next
        Application.DisplayAlerts = False
        Sheets(sName).Delete
        ActiveWorkbook.Save
      Case Is = vbNo
        MsgBox "Presionaste No Eliminar"
      Case vbCancel
        MsgBox "Cancelaste la operación"
        Cancel = True
    End Select
  Else
    Pregunta = MsgBox("Va a cerrar el libro y salir de la aplicacion" & vbCr & _
                      "¿Guardar los cambios, Cerrar y salir o No?", vbYesNo)
    If Pregunta = vbYes Then
      ActiveWorkbook.Save
    Else
      Cancel = True
    End If
  End If
End Sub

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas