Consulta sobre cierre desde uin botón en excel

Hola, me hace falta saber como y con que instrucciones puedo cerrar, pregunatndo antes si quiero grabar o no el archivo excel que estoy trabajando, desde ya muchas gracias al que me de una mano con este tema.
Adrian

1 respuesta

Respuesta
1
Espero haber entendido bien tu pregunta, lo que necesitas es que desde una macro se cierre el libro actual, y que además pregunte si quiere o no que se guarden los cambios que se hicieron:
Sub Macro1()
    Dim Respuesta%
    Respuesta = MsgBox("La macro va a terminar y el libro se cerrará," & vbLf & _
                                       " desea que se guarden los cambios??", _
                                       vbYesNo + vbCritical, _
                                       "Terminar...")
    If Respuesta = 7 Then GoTo Salir_sin_guardar
    ActiveWorkbook.Save
Salir_sin_guardar:
    Application.DisplayAlerts = False
    ActiveWindow.Close
End Sub
Hola gracias por la respuesta, una ultima aclaración, este código solo puedo usarlo en una macro o lo puedo asignar al código del botón, muchas gracias por tu ayuda
Adrian
Perdón, algo que me quedo en el tintero, ¿cómo puedo hacer para que a parte de grabar o no cancele la opción y no salga del libro?
Muchas gracias por tu ayuda.
Adrián
1. Puedes asignar la macro tanto a un botón (de la barra de herramientas de formulario en excel 2003) como a un botón de comando (de la barra de herramientas de controles en excel 2003). Para la primera, cuando diseñas el botón inmediatamente te solicita que le asignes una macro, para la segunda le tienes que dar "ver código" y ahí le colocas la macro (excepto las líneas "Sub macro 1()" y "End Sub", ya que el botón genera su propio código "Private Sub CommandButton1_Click()").
2. Para que no se salga del libro de excel, puedes agregar el siguiente código a la anterior macro después de la línea "Dim Respuesta%":
Respuesta = MsgBox("Desea Terminar?",vbYesNo + vbCritical,"Terminar")
If Respuesta = 7 Then Exit Sub
Ultima pregunta y juro no moletar más, ¿con qué instrucción cierro excel al salir después de grabar o no las modificaciones?
¿El combobox tiene alguna propiedad que haga que al regresar a la página donde esta muestre una leyenda como "Elija una opción" dentro del rectángulo donde están las opciones a elegir?
Muchas gracias por ayudarme
Adrián
1. Para cerrar excel desde VBA lo haces con:
Application. Quit
2. Lo siento pero los combobox no tienen esa opción, lo que te muestra es un listado de objetos a elegir. Cada elemento devuelve un valor que equivale a la posición de ese elemento dentro del listado. Si de todas formas lo quieres hacer, puedes colocar como primer elemento del listado "Elija una opción" y no hacer ninguna acción si el usuario selecciona esta opción, o simplemente colocar ese texto fuera del combobox (en una celda o cuadro de texto)
:)
Ok, muchas gracias por la instrucción para cerrar execl, me es más que útil
ahora para cerrar lo del mensaje en el combobox1, como puedo generara esa opción de poner el mensaje como una opción que no genere nada.
Probé con el aditem lo incluyo en la lista pero no logro que al regresar a la hoja me lo muestre, solo veo el espacio vacío y el cursor titilando dentro del cuadro,
Puse la instrucción de carga del combobox1 en el worksheet Activate, no se si esta bien, te muestro el código y te pido me des tu opinión.
Desde ya te estoy muy agradecido y espero no ser una molestia para ti pero es lo ultimo que me falta para cerrar este proyecto
Mis saludos
Adrián
Private Sub Worksheet_Activate()
Dim w As Worksheet
Hoja1.ComboBox1.Clear
Hoja1.ComboBox1.AddItem "Use una opción"
For Each w In ThisWorkbook.Worksheets
If w.Name <> Hoja1.Name Then Hoja1.ComboBox1.AddItem w.Name
Next w

End Sub
Pues lo único que te falta es decirle a excel que muestre el primer elemento (El primer elemento dentro del listado es 0). Lo puedes hacer después del ciclo, con la propiedad ListIndex así:
Hoja1.ComboBox1.ListIndex = 0
Y con esto, cada vez que actives la hoja, el combobox te va a mostrar el texto "Use una opción"
Ya lo último que te queda es determinar qué hacer con la opción que escoja el usuario, para esto puedes utilizar la propiedad ListIndex (que te devuelve la posición del elemento dentro del listado, con 0 para el primer elemento) o Text (que devuelve el texto del elemento seleccionado) del combobox.
No conozco tu nombre, se que te identificas como delzep, te agradezco todo lo que me ayudaste, realmente tu apoyo fue profesional ya que me respondiste las preguntas que yo no sabia resolver y además me guiaste para poderlas completar y entender, reitero me agradecimiento delzep a tu ayuda.
Saludos
Adrián

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas