Hola queridos amigos del foro!
Hice una aplicación completa en excel y código VBA con menú personalizado
(gracias a algunos "pulidos" que le dieron los maestros Héctor Miguel y KL
cuando oportunamente hice algunas preguntas en el foro).
La aplicación funciona muy bien pero tiene tres defectos fatales que
necesito corregir. Empezaré por la primer falla y las demás las haré en
otras consultas para no atosigar.
El primer problema es que si algún usuario que está usando la aplicación
tiene abiertos otros archivos de excel al mismo tiempo y cierra la
aplicación, en los archivos de excel que quedaron abiertos se perdieron los
displayalerts, o sea que cuando el usuario los cierra posteriormente, ya no
aparece la ventana preguntando si desea guardar los cambios, e
inavetiblemente pierde todo lo que estuvo modificando en esos archivos. En
algunos casos los ususarios tienen que resetear la PC para que excel vuelva
a funcionar correctamente.
¿Cómo hago para que los displayalerts del código funcionen sólo para la
aplicación, y que cuando ésta se cierre, excel recobre su configuración y
pregunte si desea guardar los cambios? Gracias por la ayuda.
El botón de salida tiene el siguiente código:
Sub salida()
ActiveSheet.Select
If ActiveSheet.Name = "COMENTARIOS" Then
MsgBox ("Seleccione el comando Guardar Comentarios para cerrar esta hoja"),
vbCritical
ElseIf ActiveWorkbook.ReadOnly = True Then
guardarcambios
Else
Sheets("inicio").Select
Application.ScreenUpdating = False
Dim opciones As Variant
opciones = MsgBox("¿Desea salir de la aplicación?", vbYesNo)
If opciones = vbYes Then
ActiveWorkbook.Unprotect
ActiveWorkbook.Save
Application.DisplayAlerts = False
Application.DisplayFullScreen = False
Sheets("INICIO").Select
Range("d10").Select
If Workbooks.Count > 1 _
Then ActiveWorkbook.Close
Application.DisplayAlerts = True
Else: Application.Quit
End If
End If
End Sub
Sub guardarcambios()
'If ActiveWorkbook.ReadOnly = True Then
ActiveWorkbook.Unprotect
Application.DisplayAlerts = False
Application.DisplayFullScreen = False
If Workbooks.Count > 1 _
Then ActiveWorkbook.Close
Application.DisplayAlerts = True
Else: Application.Quit
End Sub
Leer las respuestas