Visual Basic para Aplicaciones - Editar Macro con mesaje de 3 botones

Life is soft - evento anual de software empresarial
 
Vista:
Imágen de perfil de JoaoM
Val: 55
Ha mantenido su posición en Visual Basic para Aplicaciones (en relación al último mes)
Gráfica de Visual Basic para Aplicaciones

Editar Macro con mesaje de 3 botones

Publicado por JoaoM (58 intervenciones) el 23/02/2020 20:01:16
Subo el libro; trataré de exponer lo mejor que pueda

Libro con varias hojas y una macro en modulo normal para crear la hoja y copiar todos los datos de todas hojas hacia una sola llamada Global.

Mi solicitud es; una macro que he estado programando con solo conocimientos muy basicos que al salir por la X o por otro metodo, me haga las preguntas siguientes y actue
Macro en Private Sub Workbook_BeforeClose(Cancel As Boolean)
1
2
3
4
5
6
7
8
9
'Piso No
   If (MsgBox("¿Eliminar hoja Global?", vbCritical + vbYesNoCancel, "Eliminar hoja Global") = vbNo) Then
         Cancel = True 'PISÉ NO
 
'PREGUNTO
         '(msgbox ("¿Cerrar libro y Salir de la aplicacion?", vbYesNo, "Salir") = vbyes) then
'Pisé Si, Cierra libro y aplicacion.y todo sigue igual que antes
    'ActiveWorkbook.Close
    'Application.Quit

'Piso Si y procede acá
'
1
2
3
4
5
6
7
8
9
PREGUNTA
    ElseIf (MsgBox("¿Quieres Eliminar y guardar los cambios?", vbInformation + vbYesNoCancel, "Guardar cambios") = vbYes) Then
        Application.DisplayAlerts = False
        Sheets("Global").Delete
        MsgBox "hoja eliminada"
            ActiveWorkbook.Save
            MsgBox "Eliminada y Cambios guardados."
 
            Application.Quit

1
2
3
4
5
6
7
8
9
10
11
12
Else
''PISO CANCELAR
    Cancel = True
        'Application.DisplayAlerts = False
 
'MsgBox "Cambios no guardados"
 
    End If
    Application.DisplayAlerts = True
    'ActiveWorkbook.Save
    'Application.Quit
End Sub
En esto he estado varios dias pero no he logrado l oque realmente pretendo
Hay 2 macros en Workbook_BeforeClose pero m he enfocado mas en la 1ª

Les agradezco su desinteresada ayuda en mi incognita tarea
Gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Antoni Masana
Val: 1.134
Oro
Ha mantenido su posición en Visual Basic para Aplicaciones (en relación al último mes)
Gráfica de Visual Basic para Aplicaciones

Editar Macro con mesaje de 3 botones

Publicado por Antoni Masana (498 intervenciones) el 24/02/2020 16:43:21
Veamos por partes que quieres hacer.

Por lo que entiendo de las tres preguntas que veo en tu código la tercera ya incluye a la primera.

¿Eliminar hoja Global?
¿Cerrar libro y Salir de la aplicación?
¿Quieres Eliminar y guardar los cambios?

Por lo que entiendo el orden de las preguntas debería ser este:

¿Eliminar hoja Global?
¿Guardar los cambios?
¿Cerrar libro y Salir de la aplicación?

El codigo podria ser este:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
Private Sub Workbook_BeforeClose(Cancel As Boolean)
    Dim a As Integer, Respuesta As Integer
 
    ' ---&--- PREGUNTA 1 -----------------------------------------
 
    Const Texto_1a = "¿Eliminar hoja Global?"
    Const Texto_1b = "Eliminar hoja Global"
    Const Teclas_1 = vbCritical + vbYesNoCancel
 
    For a = 1 To Sheets.Count
        If UCase(Sheets(a).Name) = "GLOBAL" Then
             Respuesta = MsgBox(Texto_1a, Teclas_1, Texto_1b)
             If Respuesta = vbYes Then
                 Sheets("Global").Delete
                 MsgBox "hoja eliminada"
             End If
             Exit For
        End If
    Next
    If Respuesta = vbCancel Then Cancel=True: Exit Sub
 
    ' ---&--- PREGUNTA 2 -----------------------------------------
 
    Const Texto_2a = "¿Guardar los cambios?"
    Const Texto_2b = "Guardar cambios"
    Const Teclas_2 = vbInformation + vbYesNoCancel
 
    Respuesta = MsgBox(Texto_2a, Teclas_2, Texto_2b)
    If Respuesta = vbYes Then
        ActiveWorkbook.Save
        MsgBox "Cambios guardados."
    End If
    If Respuesta = vbCancel Then Cancel=True: Exit Sub
 
    ' ---&--- PREGUNTA 3 -----------------------------------------
 
    Const Texto_3a = "¿Cerrar libro y Salir de la aplicación?"
    Const Texto_3b = "Salir"
    Const Teclas_3 = vbQuestion + vbYesNo
 
    If MsgBox(Texto_3a, Teclas_3, Texto_3b) = vbYes Then
        Application.DisplayAlerts = False
        Application.Quit
    End If
End Sub

La 1ª pregunta solo la hace si existe la hoja GLOBAL. Si pulsa CANCELAR sale y no pregunta más.
La 2ª pregunta guarda los datos si responde SI. Si pulsa CANCELAR sale y no pregunta más.
La 3ª pregunta si responde SI cierra el Libro sin Guardar y el Excel

Saludos.
\\//_
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
Imágen de perfil de JoaoM
Val: 55
Ha mantenido su posición en Visual Basic para Aplicaciones (en relación al último mes)
Gráfica de Visual Basic para Aplicaciones

Editar Macro con mesaje de 3 botones

Publicado por JoaoM (58 intervenciones) el 25/02/2020 02:11:49
1
2
3
Veamos por partes que quieres hacer.
 
Por lo que entiendo de las tres preguntas que veo en tu código la tercera ya incluye a la primera.

Hola Antonio, gracias por tu tiempo y amabilidad de contestar con ya alguna respuesta dando solucion a mi Macro de enredadas preguntas que yo mismo tengo que pensarlas para describirlas.
Un tanto confusas para mi mismo. A ver si encajo jejej

Mando cerrar la aplicacion y por supuesto quer Excel me preguntará si quiero guardar los cambios, en ves de excel preguntar, me lo hiciera la macro.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
1ª Pregunta = If (msgbox ("¿Eliminar hoja Global?", vbCritical + vbYesNoCancel, "Eliminar hoja Global") = vbNo) Then
         Cancel = True
         Sheets("Global").Delete
Respondo No Cancela lo demas de la macro. Si respondo Si, sigue la macro eliminando la hoja Global
 
2ª Pregunta = (msgbox ("¿Cerrar libro y Salir de la aplicacion?", vbYesNo, "Salir") = vbyes) then
    'ActiveWorkbook.Close
    'Application.Quit
Respondo Si Cierra el libro y aplicacion Excel sin guardar. Respondo No no cierra libro ni sale de la aplicacion
 
3ª Pregunta     ElseIf (MsgBox("¿Quieres Eliminar y guardar los cambios?", vbInformation + vbYesNoCancel, "Guardar cambios") = vbYes) Then
        Application.DisplayAlerts = False
        Sheets("Global").Delete
        MsgBox "hoja eliminada"
            ActiveWorkbook.Save
            MsgBox "Eliminada y Cambios guardados."
 
            Application.Quit
Respondo Si Elimina la hoja Global me avisa que fue eliminada y avisa que guardo los cambios y cierra todo incluyendo la aplicacion.
 
    Else
Si piso Cancelar sale de todo y sigo con el libro abierto y la aplicacion. Según tu mismo confirmas  ESTE PASO YA ESTA EN LA 1ª PREGUNTA AL PISAR CANCELAR ¿CIERTO?
    Cancel = True
        'Application.DisplayAlerts = False
        'Sheets("Global").Delete
 
    End If
    Application.DisplayAlerts = True

Esta ultima parte, la Else creo estar en la 1ª pregunta.

Mi confusion es el ordenamiento de las preguntas y respuestas. ORDENAR LA MACRO para que todo salga cierto
Gracias Antonio por adelantado en darme ese ordenamiento de las cosas en la macro
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de JoaoM
Val: 55
Ha mantenido su posición en Visual Basic para Aplicaciones (en relación al último mes)
Gráfica de Visual Basic para Aplicaciones

Editar Macro con mesaje de 3 botones

Publicado por JoaoM (58 intervenciones) el 25/02/2020 02:59:31
Tu macro
1ª pregunta = respondo si y recibo pregunta de Excel, Eliminará permanentemente esta hoja . ?Desea continuar? respondo Eliminar y elimina
Recibo Aviso de Hoja eliminada

Recibo mensage de que si quiero guardar cambios digo Si me avisa Cambios Guardados piso Aceptar

Recibo mensage de si quiero cerrar libro y aplicacion digo Si sale de todo, libro y aplicacion
Si le respondo No de igual cierra libro y aplicacion pero mantiene la hoja

Al abrir el libro crio la hoja Global y en el punto que me pregunta si quiero o no guardar cambios respondo No y y me aparece el mensage si quiero o no Salir de libro y aplicacion le respondo No y me sale nuevamente mensaje de Excel si quiero o no guardar cambios, respondo No y sale del libro y aplicacion.
Deberia de no guardar y no salir.
¿Lo probaste ahí Antonio?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Antoni Masana
Val: 1.134
Oro
Ha mantenido su posición en Visual Basic para Aplicaciones (en relación al último mes)
Gráfica de Visual Basic para Aplicaciones

Editar Macro con mesaje de 3 botones

Publicado por Antoni Masana (498 intervenciones) el 25/02/2020 15:16:34
La mejor Forma de entender que quieres hacer es rellenar este pequeño questinadio, lo llaman tabla de decisión y ayuda a replantearse el problema y a entender lo que se quiere hacer, yo mismo la he usado con problemas complejos o al menos en mi cabeza lo eran.

Es sencillo, ¿Que pregunto? ¿Que hace si responde SI? ¿Que hace si responde NO? ¿Que hace si responde CANCELA?

Pregunta - 1
1
2
3
4
===== Texto =====...___________________________________________________________
Respuesta SI........___________________________________________________________
Respuesta NO........___________________________________________________________
Respuesta CANCELA...___________________________________________________________

Pregunta - 2
1
2
3
4
===== Texto =====...___________________________________________________________
Respuesta SI........___________________________________________________________
Respuesta NO........___________________________________________________________
Respuesta CANCELA...___________________________________________________________

Pregunta - 3
1
2
3
4
===== Texto =====...___________________________________________________________
respuesta SI........___________________________________________________________
Respuesta NO........___________________________________________________________
Respuesta CANCELA...___________________________________________________________

Saludos.
\\//_
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
Imágen de perfil de JoaoM
Val: 55
Ha mantenido su posición en Visual Basic para Aplicaciones (en relación al último mes)
Gráfica de Visual Basic para Aplicaciones

Editar Macro con mesaje de 3 botones

Publicado por JoaoM (58 intervenciones) el 25/02/2020 18:03:25
Hola Antonio, no tengo problema de rellenar el cuestionario.
De ninguna manera quiero fastidiarte o molestarte con este problema, problema que solo queda el detalle de contradición entre los 2 botones Si y No de la respuesta 3 los 2 están respondiendo a lo mismo, SI
Hasta el pase de tu macro y probandola, estoy contenticimo visto que el avance (NO MIO) es excelente, con solo el detalle de la pregunta 3

El punto es, le respondo No (Salir del libro ni Aplicación) NO DEBERIA Salir del libro ni Aplicación, pues le dije que NO, PARA QUE TODO QUEDE como estaba antes de aparecer la PREGUNTA 3
Claro está que si respondo SI, es lógico que salga y siga la macro
Hay una contradicción entre el Si y el No, que los 2 botones responden al SI

1
2
3
4
5
6
Pregunta - 3
===== Texto ===== …….. ¿Quiere usted salir del libro aplicación?
Respuesta …….. SI = Sale del libro y aplicación Lo está haciendo
Respuesta NO = DEBE SEGUIR el libro y aplicación abiertos, con los cambios que se le dieron hasta este momento, sin que pregunte nada más y se pueda seguir trabajando en el libro
 
Respuesta CANCELAR ....... Cancela todo a partir de aquí. Sigue libro y aplicación ABIERTOS para seguir trabajando en el libro
Si al responder CANCELAR, pueda cancelar (ANULAR) todo lo anterior respondido hasta esta pregunta, PERFECTO, si no se puede, perfecto también.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Antoni Masana
Val: 1.134
Oro
Ha mantenido su posición en Visual Basic para Aplicaciones (en relación al último mes)
Gráfica de Visual Basic para Aplicaciones

Editar Macro con mesaje de 3 botones

Publicado por Antoni Masana (498 intervenciones) el 25/02/2020 18:51:58
Intento entender que es lo que quieres hacer.

Según lo que cuentas entiendo que estas son las opciones:

Pregunta - 1

1
2
3
4
===== Texto =====... ¿Eliminar hoja Global?
Respuesta SI........ Eliminar la hoja y continuar.
Respuesta NO........ Cancelar la macro.
Respuesta CANCELA... Cancelar la macro.

Pregunta - 2

1
2
3
4
===== Texto =====... ¿Cerrar libro y Salir de la aplicacion?
Respuesta SI........ Cerrar el libro y el Excel sin guardar.
Respuesta NO........ Continuar
Respuesta CANCELA... Cancelar la macro

Pregunta - 3

1
2
3
4
===== Texto =====... ¿Quieres Eliminar y guardar los cambios?
respuesta SI........ Borrar la hoja GLOBAL, Guardar los cambios, Cerrar el libro y el Excel
Respuesta NO........ Cancelar la macro.
Respuesta CANCELA... Cancelar la macro.

Pero esto es un sinsentido.

Si la macro continúa después de contestar SI en la primera pregunta ¿para que queremos borrar la hoja GLOBAL en la tercera pregunta?
Si en la segunda pregunta sale sin guardar ¿Para que se borra la hoja GLOBAL antes de salir?

Cuando se pulsa la opción de CERRAR solo hay tres caminos posibles

1.- Guardar y salir.
2.- Salir sin guardar.
3.- Cancelar la salida.

En la primera opción hay dos posibilidades

1.1.- Eliminar la hoja GLOBAL, guardar y salir.
1.2.- Guardar con la hoja GLOBAL y salir.

Y si el posibilidad 1.2 no se contempla solo hace falta una pregunta: ¿Quieres guardar los cambios?

No se si me he explicado bien, espero que si.

Saludos.
\\//_
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
Imágen de perfil de JoaoM
Val: 55
Ha mantenido su posición en Visual Basic para Aplicaciones (en relación al último mes)
Gráfica de Visual Basic para Aplicaciones

Editar Macro con mesaje de 3 botones

Publicado por JoaoM (58 intervenciones) el 25/02/2020 19:51:06
Creo entenderte Antonio. Buena stardes. Estoy casi seguro que es de mi parte lo que exijo no está bien explicito para darme a entender
Es en caso que me arrepienta de lo anterior. Si me arrepiento en la 1ª o 2ª o 3ª pregunta el boton Cancelar
Si me arrepiento 3.- Cancelar la salida.

Ok, ya te diste cuenta de como lo pensé, en la 1ª, 2ª y 3ª pregunta, me queda pedirte lo mejor para el mensage de 3 botones; Si, No y Cancelar tambien en la 3ª Pregunta
Te dejaria a tu criterio que eres la persona entendida en estos menesteres.
De la pregunta 3 perdoname por insistir = Const Teclas_3 = vbQuestion + vbYesNo falta aqui (creo yo) vbYesNoCancel para desde aqui, tambien poder cancelar =
'
1
2
3
4
5
6
7
8
9
10
---&--- PREGUNTA 3 -----------------------------------------
 
    Const Texto_3a = "¿Cerrar libro y Salir de la aplicación o Cancelar?"
    Const Texto_3b = "Salir"
    Const Teclas_3 = vbQuestion + vbYesNo 'vbYesNoCancel
 
    If MsgBox(Texto_3a, Teclas_3, Texto_3b) = vbYes Then
        Application.DisplayAlerts = False
        Application.Quit
    End If
vbCancel Then Cancel = True: Exit Sub
vbCancel Then Cancel = True: Exit Sub
Le he dado vueltas pero no paso de estupideces
De todos modos sigo por aqui dando y dando vueltas a ver si logro lo deseado en ta respuesta

Gracias Antonio. Una gran labor la de ustedes que todo lo dan sin nada pedir a cambio

Aqui está el detalle en SOLO la 3ª pregunta

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
Pregunta - 1
 
===== Texto =====... ¿Eliminar hoja Global?
 
Respuesta SI........ Eliminar la hoja y continuar.
 
Respuesta NO........ Cancelar la macro.
 
Respuesta CANCELA... Cancelar la macro.
 
 
Pregunta - 2
 
===== Texto =====... ¿Cerrar libro y Salir de la aplicacion?
 
Respuesta SI........ Cerrar el libro y el Excel sin guardar.
 
Respuesta NO........ Continuar
 
Respuesta CANCELA... Cancelar la macro
 
 
Pregunta - 3
vbYesNoCancel
===== Texto =====... ¿Quieres Eliminar y guardar los cambios y salir?
 
respuesta SI........ Borrar la hoja GLOBAL, Guardar los cambios, Cerrar el libro y el Excel
 
Respuesta NO........ Cancelar la macro.
 
Respuesta CANCELA... Cancelar la macro.

Cancelo Dejar todo como antes de la 1ª pregunta No guarda, no elimina ni salgo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de JoaoM
Val: 55
Ha mantenido su posición en Visual Basic para Aplicaciones (en relación al último mes)
Gráfica de Visual Basic para Aplicaciones

Editar Macro con mesaje de 3 botones

Publicado por JoaoM (58 intervenciones) el 25/02/2020 20:21:55
Pregunta - 3
1
2
3
4
5
6
7
8
9
vbYesNo
 
===== Texto =====... ¿Quieres Eliminar, guardar los cambios y salir?
 
respuesta SI........ "Borrar la hoja GLOBAL, Guardar los cambios y Cerrar el libro y el Excel?
Respuesta NO........ Cancelar la macro. 'PODRIA SER SI, CANCELAR LA MACRO Y NO SALIR
Respuesta CANCELA... Cancelar la macro.

Podria ser = Respondo No = NO ELIMINA NO GUARDA Y NO SALE Cancelo Dejar todo como antes de la 1ª pregunta
Respondo Si = LO INVERSO DEL NO
Ya seria la macro mas pequeña, pero que entremedio preguntara si deseo seguir con el proceso "Desea seguir con el proceso de salida?"
Aceptar sigue Cancelar Cancela la macro y lo anterior respondido hasta la 1ª pregunta
Te dejo en tu critério Antonio
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Antoni Masana
Val: 1.134
Oro
Ha mantenido su posición en Visual Basic para Aplicaciones (en relación al último mes)
Gráfica de Visual Basic para Aplicaciones

Editar Macro con mesaje de 3 botones

Publicado por Antoni Masana (498 intervenciones) el 25/02/2020 21:24:31
Yo tampoco soy un artista de la lengua y tampoco me se explicar con gran soltura y una cosa es hablar y la otra escribir.

Puedes hacer las preguntas que quieras pero lo más simple es lo que mejor funciona, osea una sola pregunta y tres opciones.

De todas formas mañana te lo miro y te envío con las tres preguntas.

Yo habia puesto que si no existe la hoja GLOBAL no realice la primera pregunta, pero quizás prefieras que la pregunta la realice igualmente.

Saludos.
\\//_
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
Imágen de perfil de JoaoM
Val: 55
Ha mantenido su posición en Visual Basic para Aplicaciones (en relación al último mes)
Gráfica de Visual Basic para Aplicaciones

Editar Macro con mesaje de 3 botones

Publicado por JoaoM (58 intervenciones) el 25/02/2020 23:16:45
Si, solo esta en la Pregunta 3 adicionarle el comando Cancelar para que al cancelar cancele todo; cancele Salir, cancele guardar y cancele eliminar hoja como mencioné arriba.
Ok Antonio, no hay apuros esto es para mi uso personal que al tener varios libros con datos en que para guardarlos, puedo guardar varios en uno solo, por eso la hoja global y para hacerlo recogi a una macro que vi por la WEB que es esta, te la dejo para que las visualises aunque quisiera alguna modificacion.
Hice que lo hiciera con los titulos pero para darle el color rojo a titulos y nombres de cada hojas copiadas, no le llego.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
Sub JuntarHojas()
Application.DisplayAlerts = False
For Each hoja In ActiveWorkbook.Sheets
If hoja.Name = "Global" Then hoja.Delete
Next
Sheets.Add before:=Sheets(1)
ActiveSheet.Name = "Global"
 
       ' Range("A1:m1").Font.Color = vbRed
       ' Range("A1:M1").Font.Bold = True
    With Range("A1:M1").Font
        .Color = vbRed
        .Bold = True
    End With
 
For x = 2 To Sheets.Count
Sheets(x).Select
 
Range("a1:o" & Range("a65000").End(xlUp).Row).Copy
 
Sheets("Global").Range("a65000").End(xlUp).Offset(0, 0).PasteSpecial Paste:=xlValues
 
Next
Sheets("Global").Select
Range("A1").Select
End Sub

Quisiera llegar a esto
En algunos las hojas llegan a ser mas de 100 por eso quisiera saber en la hoja Global que me copie tambien el nombre de hoja y titulos

Mas para delante hago nueva pregunta
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Antoni Masana
Val: 1.134
Oro
Ha mantenido su posición en Visual Basic para Aplicaciones (en relación al último mes)
Gráfica de Visual Basic para Aplicaciones

Editar Macro con mesaje de 3 botones

Publicado por Antoni Masana (498 intervenciones) el 26/02/2020 15:22:49
Esta es la macro con las tres preguntas.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
Private Sub Workbook_BeforeClose(Cancel As Boolean)
    Dim a As Integer, Respuesta As Integer, Existe As Boolean
 
    ' ---&--- PREGUNTA 1 -----------------------------------------
 
    Const Texto_1a = "¿Eliminar hoja Global?"
    Const Texto_1b = "Eliminar hoja Global"
    Const Teclas_1 = vbCritical + vbYesNoCancel
 
    Existe = False
    For a = 1 To Sheets.Count
        If UCase(Sheets(a).Name) = "GLOBAL" Then Existe = True
    Next
 
    Respuesta = MsgBox(Texto_1a, Teclas_1, Texto_1b)
    If Respuesta = vbYes Then
        If Existe Then
            Sheets("Global").Delete
            MsgBox "hoja eliminada"
        End If
    End If
 
    If Respuesta = vbCancel Then Cancel = True: Exit Sub
    If Respuesta = vbNo Then Cancel = True: Exit Sub
 
    ' ---&--- PREGUNTA 2 -----------------------------------------
 
    Const Texto_3a = "¿Cerrar libro y Salir de la aplicación?"
    Const Texto_3b = "Salir"
    Const Teclas_3 = vbQuestion + vbYesNo
 
    If MsgBox(Texto_3a, Teclas_3, Texto_3b) = vbYes Then
        Application.DisplayAlerts = False
        Application.Quit
    End If
 
    If Respuesta = vbCancel Then Cancel = True: Exit Sub
 
    ' ---&--- PREGUNTA 3 -----------------------------------------
 
    Const Texto_2a = "¿Guardar los cambios?"
    Const Texto_2b = "Guardar cambios"
    Const Teclas_2 = vbInformation + vbYesNoCancel
 
    Respuesta = MsgBox(Texto_2a, Teclas_2, Texto_2b)
    If Respuesta = vbYes Then
        ActiveWorkbook.Save
        MsgBox "Cambios guardados."
        Application.Quit
    End If
    Cancel = True
End Sub

Esta es la macro con una sola pregunta:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
Private Sub Workbook_BeforeClose(Cancel As Boolean)
    Dim a As Integer
 
    ' ---&--- PREGUNTA 1 -----------------------------------------
 
    Const Texto = "¿Guardar los cambios?"
    Const Cabec = "SALIR"
    Const Tecla = vbCritical + vbYesNoCancel
 
    Select Case MsgBox(Texto, Tecla, Cabec)
        Case vbYes
            For a = 1 To Sheets.Count
                If UCase(Sheets(a).Name) = "GLOBAL" Then
                    Sheets("Global").Delete
                    MsgBox "hoja eliminada"
                End If
            Next
            ActiveWorkbook.Save
            MsgBox "Cambios guardados."
            Application.Quit
 
        Case vbNo
            Application.DisplayAlerts = False
            Application.Quit
 
        Case vbCancel
            Cancel = True
    End Select
End Sub

Saludos.
\\//_
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
Imágen de perfil de JoaoM
Val: 55
Ha mantenido su posición en Visual Basic para Aplicaciones (en relación al último mes)
Gráfica de Visual Basic para Aplicaciones

Editar Macro con mesaje de 3 botones

Publicado por JoaoM (58 intervenciones) el 27/02/2020 00:11:58
Hola Antonio. Mis agradecimientos y demos gracia sa Dios por tus conocimientos.
Yo por mi parte, con mis 72 voy dando con lo basico.

Pues decirte que me gusta mas la de 1 sola pregunta, pero al cerrar me pregunta:
?Guardar los cambios? respondo Si
Me llega la pregunta de excel Excel eliminará permanentemente esta hoja ?Desea Continuar? le respondo Eliminar
La respuesta de Excel = Hoja eliminada a esta ultima le aprieto Aceptar y me aparece Se ha producido Eror 9 en tiempo de ejecucion, Sub indice fuera de intervalo, y me manda para esta linea.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
Private Sub Workbook_BeforeClose(Cancel As Boolean)
 
    Dim a As Integer
 
     ' ---&--- PREGUNTA 1 -----------------------------------------
 
    Const Texto = "¿Guardar los cambios?"
 
    Const Cabec = "SALIR"
 
    Const Tecla = vbCritical + vbYesNoCancel
 
 
    Select Case MsgBox(Texto, Tecla, Cabec)
 
        Case vbYes
 
            For a = 1 To Sheets.Count
 
            If UCase(Sheets(a).Name) = "GLOBAL" Then ESTA ES LA LINEA
 
                    Sheets("Global").Delete
 
                    MsgBox "hoja eliminada"

¿Será porque primero pregunta si quiero guardar los cambios y solo despues es que elimina la hoja?
Claro que antes de eliminarla según el codigo, verifica si la hoja existe y si existe la elimina, pero ¿no seria l ocontrario?
Primero eliminar y solo despues preguntar si deseo guardar los cambios? seria cosa de cambiar el orden de preguntas,
entre
1
2
3
4
5
MsgBox "hoja eliminada"
 
' ¿guardar los cambios?
 
                End If
Pienso que preguntar guardar sin antes eliminar, no le veo sentido pero tu eres el experimentado y sabio en esto de programacion
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Antoni Masana
Val: 1.134
Oro
Ha mantenido su posición en Visual Basic para Aplicaciones (en relación al último mes)
Gráfica de Visual Basic para Aplicaciones

Editar Macro con mesaje de 3 botones

Publicado por Antoni Masana (498 intervenciones) el 27/02/2020 15:30:44
Es que hay un error del que nunca me acuerdo y siempre caigo:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
Private Sub Workbook_BeforeClose(Cancel As Boolean)
    Dim a As Integer
 
    ' ---&--- PREGUNTA 1 -----------------------------------------
 
    Const Texto = "¿Guardar los cambios?"
    Const Cabec = "SALIR"
    Const Tecla = vbCritical + vbYesNoCancel
 
    Select Case MsgBox(Texto, Tecla, Cabec)
        Case vbYes
            For a = Sheets.Count To Step -1
                If UCase(Sheets(a).Name) = "GLOBAL" Then
                    Sheets("Global").Delete
                    MsgBox "hoja eliminada"
                    Exit For
                End If
            Next
            ActiveWorkbook.Save
            MsgBox "Cambios guardados."
            Application.Quit
 
        Case vbNo
            Application.DisplayAlerts = False
            Application.Quit
 
        Case vbCancel
            Cancel = True
    End Select
End Sub

Sorry

Saludos.
\\//_
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
Imágen de perfil de JoaoM
Val: 55
Ha mantenido su posición en Visual Basic para Aplicaciones (en relación al último mes)
Gráfica de Visual Basic para Aplicaciones

Editar Macro con mesaje de 3 botones

Publicado por JoaoM (58 intervenciones) el 27/02/2020 23:34:41
Antonio, no quisiera molestarte de ninguna manera. Tu tiempo dedicado a los usuarios carentes de conocimientos, es la prueba de tu generosidad, por esto, pienso que desde lo mas alla, en la distancia uno recibe ayudas impensables.
Co ntodo esto quiero decirte que está peor que la anterior.
A la 1ª pregunta que sale = ¿Guardar los cambios? respondo Si y me dice Cambios guardados, Acepto y sale del libro y aplicacion, sin eliminar ni nada ams, llega hasta Cambios guardados

A la 1ª pregunta que sale = ¿Guardar los cambios? respondo No sale del libro y aplicacion, sin eliminar ni nada más, llega hasta responderle No a la 1ª pregunta
Si respondo Cancel, sale de la macro y queda libro y aplicacion en abierto, hasta ahí bien
Gracias Antonio. date tu tiempo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Antoni Masana
Val: 1.134
Oro
Ha mantenido su posición en Visual Basic para Aplicaciones (en relación al último mes)
Gráfica de Visual Basic para Aplicaciones

Editar Macro con mesaje de 3 botones

Publicado por Antoni Masana (498 intervenciones) el 28/02/2020 14:30:35
Lo siento me je de poner un 1

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
Private Sub Workbook_BeforeClose(Cancel As Boolean)
    Dim a As Integer
 
    ' ---&--- PREGUNTA 1 -----------------------------------------
 
    Const Texto = "¿Guardar los cambios?"
    Const Cabec = "SALIR"
    Const Tecla = vbCritical + vbYesNoCancel
 
    Select Case MsgBox(Texto, Tecla, Cabec)
        Case vbYes
            For a = Sheets.Count To 1 Step -1
                If UCase(Sheets(a).Name) = "GLOBAL" Then
                    Sheets("Global").Delete
                    MsgBox "hoja eliminada"
                    Exit For
                End If
            Next
            ActiveWorkbook.Save
            MsgBox "Cambios guardados."
            Application.Quit
 
        Case vbNo
            Application.DisplayAlerts = False
            Application.Quit
 
        Case vbCancel
            Cancel = True
    End Select
End Sub

Saludos.
\\//_
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
Imágen de perfil de JoaoM
Val: 55
Ha mantenido su posición en Visual Basic para Aplicaciones (en relación al último mes)
Gráfica de Visual Basic para Aplicaciones

Editar Macro con mesaje de 3 botones

Publicado por JoaoM (58 intervenciones) el 28/02/2020 21:51:28
Hola Antonio.
No no, algo habia echo mal yo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de JoaoM
Val: 55
Ha mantenido su posición en Visual Basic para Aplicaciones (en relación al último mes)
Gráfica de Visual Basic para Aplicaciones

Editar Macro con mesaje de 3 botones

Publicado por JoaoM (58 intervenciones) el 28/02/2020 23:14:11
Hola Antonio, recibe mis saludos y mis gracias,

A la 1ª pregunta que sale = ¿Guardar los cambios? respondo Si y me dice Excel eliminará permanentemente esta hoja Respondo Eliminar, luego me dice Hoja eliminada, piso Aceptar y sale del libro y aplicación. Efectivamente elimina la hoja y al volver a abrir ya no está dicha hoja, muy bien

Vamos por responderle No a la 1ª pregunta
Crio la hoja Global, hoja donde se unen todos los datos de las demás 100, 200, 500, 1000 etc. etc.
Guardo los cambios del libro por el icono del Disket arriba o por ir a Archivo y pisar Guardar. Aquí es claro que los cambios ya están guardados, PERFECTO

A la 1ª pregunta que sale = ¿Guardar los cambios? respondo No, CLARO, SE ENTIENDE QUE LOS CAMBIOS LOS GUARDE ANTERIORMENTE POR VIA icono Y AL RESPONDER NO, nada hace y sale del libro y aplicación

Ahora criando la hoja Global SIN guardar por vía icono o Archivo y pisar Guardar

Cierro por X o otro modo
A la pregunta ¿Guardar los cambios? respondo No, sale del libro y aplicación, sin Guardar cambios. Al volver a abrir el libro la hoja Global no está, lógico pues la crie, pero al salir le dije que no guardara los cambios. Hasta aquí todo bien

En caso de que quiero cancelar mis respuestas y quedarme en el libro y por supuesto la aplicación

En la 1ª pregunta “¿Guardar los cambios?” le digo Si me aparece la pregunta de "Excel eliminará permanentemente esta hoja" Respondo Cancelar (entiendo yo que este mensaje no está en la macro es del propio Excel) y le doy en cancelar, viene el mensaje "Hoja eliminada, le doy Aceptar y me dice "Cambios guardados" Acepto y sale del libro y aplicación.
En este punto podría haber una equivocación y por eso, se entiende que le estoy dando en Cancelar seria para que cancelara todo y dejara el libro y la aplicación en abierto para seguir con las labores. Claro está que la hoja no la elimina, al volver a abrir el libro, ahí sigue la hoja
En este punto vuelvo a abrir el libro para seguir mis labores en él.

Gracias Antonio. date tu tiempo y al menos hasta aquí me serviría, pero si encuentras el punto, del cancelar en el mensaje de "Excel eliminará permanentemente esta hoja", no está demás dejármelo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Antoni Masana
Val: 1.134
Oro
Ha mantenido su posición en Visual Basic para Aplicaciones (en relación al último mes)
Gráfica de Visual Basic para Aplicaciones

Editar Macro con mesaje de 3 botones

Publicado por Antoni Masana (498 intervenciones) el 02/03/2020 16:37:24
Mis disculpas, con las prisas no lo había probado y creí que estaba bien.

Ahora si que lo he probado y ya funciona correctamente.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
Private Sub Workbook_BeforeClose(Cancel As Boolean)
    Dim a As Integer
 
    ' ---&--- PREGUNTA 1 -----------------------------------------
 
    Const Texto = "¿Guardar los cambios?"
    Const Cabec = "SALIR"
    Const Tecla = vbCritical + vbYesNoCancel
 
    Application.DisplayAlerts = False
 
    Select Case MsgBox(Texto, Tecla, Cabec)
        Case vbYes
            For a = Sheets.Count To 1 Step -1
                If UCase(Sheets(a).Name) = "GLOBAL" Then
                    Sheets("Global").Delete
                    MsgBox "hoja eliminada"
                    Exit For
                End If
            Next
            ActiveWorkbook.Save
            MsgBox "Cambios guardados."
            Application.Quit
 
        Case vbNo
            Application.Quit
 
        Case vbCancel
            Cancel = True
    End Select
 
    Application.DisplayAlerts = True
End Sub


Saludos.
\\//_
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
Imágen de perfil de JoaoM
Val: 55
Ha mantenido su posición en Visual Basic para Aplicaciones (en relación al último mes)
Gráfica de Visual Basic para Aplicaciones

Editar Macro con mesaje de 3 botones

Publicado por JoaoM (58 intervenciones) el 02/03/2020 18:57:45
Antes de comentarte algo y antes de probarla, quiero Antonio saludarte y dejando en claro que no tienes (ni tu ni ninguno que preste la ayuda aqui o en otro foro) pedir disculpas porque sus ayudas son sin nada pedir a cambio, ayudas desinteresadas.

Voy y vengo dejando el resultado
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de JoaoM
Val: 55
Ha mantenido su posición en Visual Basic para Aplicaciones (en relación al último mes)
Gráfica de Visual Basic para Aplicaciones

Editar Macro con mesaje de 3 botones

Publicado por JoaoM (58 intervenciones) el 02/03/2020 19:29:49
Ok Antonio, muy bien, gracias por tu trabajo desinteresado
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar