ExcelBanter

ExcelBanter (https://www.excelbanter.com/)
-   Excel Programming (https://www.excelbanter.com/excel-programming/)
-   -   How to restore a Custom menu if a user presses Cancel after selcting exit (https://www.excelbanter.com/excel-programming/357941-how-restore-custom-menu-if-user-presses-cancel-after-selcting-exit.html)

Alseikhan[_5_]

How to restore a Custom menu if a user presses Cancel after selcting exit
 

A workbook has the subroutine attached to workbook:

Private Sub Workbook_BeforeClose(Cancel As Boolean)
Call DeleteMenu
End Sub

to delete custom menu before closing the workbook.
However, if a user changes mind and presses Cancel to keep workbook
open, the custom menu is deleted anyway!

How do you solver this problem?

Thank you.
Alseikhan


--
Alseikhan
------------------------------------------------------------------------
Alseikhan's Profile: http://www.excelforum.com/member.php...o&userid=32364
View this thread: http://www.excelforum.com/showthread...hreadid=529491


Greg Wilson

How to restore a Custom menu if a user presses Cancel after selcti
 
Typically I add controls to the Worksheet Menu Bar instead of making custom
toolbars but the same holds for toolbars. I create them programmatically on
wb_open and make them Temporary. I make them invisible on wb_deactivate and
visible again on wb_activate. So when the application is closed, they are
deleted since they are Temporary. They are, of course, recreated when the
particular wb is opened.

If the user has more than one wb open then, if they activate a different wb,
the commandbar is made invisible (wb_deactivate event) so that they cannot
run a macro that's inappropriate for the other wb. They are made visible
again when the user returns to the wb (wb_activate event).

Works fine so far.

Regards,
Greg

"Alseikhan" wrote:


A workbook has the subroutine attached to workbook:

Private Sub Workbook_BeforeClose(Cancel As Boolean)
Call DeleteMenu
End Sub

to delete custom menu before closing the workbook.
However, if a user changes mind and presses Cancel to keep workbook
open, the custom menu is deleted anyway!

How do you solver this problem?

Thank you.
Alseikhan


--
Alseikhan
------------------------------------------------------------------------
Alseikhan's Profile: http://www.excelforum.com/member.php...o&userid=32364
View this thread: http://www.excelforum.com/showthread...hreadid=529491



Doug Glancy

How to restore a Custom menu if a user presses Cancel after selcting exit
 
Alseikhan,

Try something like this. It replaces Excel's prompt with a custom one, and
uses a global variable that is passed to the Deactivate event, which happens
when the workbook is really closing:

Option Explicit
Dim wb_closing As Boolean

Private Sub Workbook_BeforeClose(Cancel As Boolean)

Dim wb_saved As Boolean
Dim save_wb_or_cancel As VbMsgBoxResult

wb_saved = ThisWorkbook.Saved
If Not wb_saved Then
ThisWorkbook.Saved = True
save_wb_or_cancel = MsgBox(prompt:="Do you want to save changes to " &
"""" & ThisWorkbook.Name & "?""", _
Buttons:=vbExclamation + vbYesNoCancel + vbDefaultButton1,
Title:="LOOKS LIKE EXCEL")
Select Case save_wb_or_cancel
Case vbYes
With ThisWorkbook
.Save
.Close
End With
wb_closing = True
Case vbNo
ThisWorkbook.Close
wb_closing = True
Case vbCancel
Cancel = True
End Select
Else
wb_closing = True
End If

End Sub

Private Sub Workbook_Deactivate()

If wb_closing Then
MsgBox "really closing"
Call DeleteMenu
End If

End Sub

hth,

Doug


"Alseikhan" wrote
in message ...

A workbook has the subroutine attached to workbook:

Private Sub Workbook_BeforeClose(Cancel As Boolean)
Call DeleteMenu
End Sub

to delete custom menu before closing the workbook.
However, if a user changes mind and presses Cancel to keep workbook
open, the custom menu is deleted anyway!

How do you solver this problem?

Thank you.
Alseikhan


--
Alseikhan
------------------------------------------------------------------------
Alseikhan's Profile:
http://www.excelforum.com/member.php...o&userid=32364
View this thread: http://www.excelforum.com/showthread...hreadid=529491




Doug Glancy

How to restore a Custom menu if a user presses Cancel after selcting exit
 
A couple of errors in the previous post. Use this instead for the
BeforeClose. Also be sure to test this to make sure I haven't made any
other mistakes, otherwise you could lose data:

Private Sub Workbook_BeforeClose(Cancel As Boolean)

Dim wb_saved As Boolean
Dim save_wb_or_cancel As VbMsgBoxResult

wb_saved = ThisWorkbook.Saved
If Not wb_saved Then
ThisWorkbook.Saved = True
save_wb_or_cancel = MsgBox(prompt:="Do you want to save changes to " &
"""" & ThisWorkbook.Name & "?""", _
Buttons:=vbExclamation + vbYesNoCancel + vbDefaultButton1,
Title:="LOOKS LIKE EXCEL")
Select Case save_wb_or_cancel
Case vbYes
ThisWorkbook.Save
wb_closing = True
Case vbNo
wb_closing = True
Case vbCancel
ThisWorkbook.Saved = False
Cancel = True
End Select
Else
wb_closing = True
End If

End Sub

--
Doug


"Doug Glancy" wrote in message
...
Alseikhan,

Try something like this. It replaces Excel's prompt with a custom one,
and uses a global variable that is passed to the Deactivate event, which
happens when the workbook is really closing:

Option Explicit
Dim wb_closing As Boolean

Private Sub Workbook_BeforeClose(Cancel As Boolean)

Dim wb_saved As Boolean
Dim save_wb_or_cancel As VbMsgBoxResult

wb_saved = ThisWorkbook.Saved
If Not wb_saved Then
ThisWorkbook.Saved = True
save_wb_or_cancel = MsgBox(prompt:="Do you want to save changes to " &
"""" & ThisWorkbook.Name & "?""", _
Buttons:=vbExclamation + vbYesNoCancel + vbDefaultButton1,
Title:="LOOKS LIKE EXCEL")
Select Case save_wb_or_cancel
Case vbYes
With ThisWorkbook
.Save
.Close
End With
wb_closing = True
Case vbNo
ThisWorkbook.Close
wb_closing = True
Case vbCancel
Cancel = True
End Select
Else
wb_closing = True
End If

End Sub

Private Sub Workbook_Deactivate()

If wb_closing Then
MsgBox "really closing"
Call DeleteMenu
End If

End Sub

hth,

Doug


"Alseikhan" wrote
in message ...

A workbook has the subroutine attached to workbook:

Private Sub Workbook_BeforeClose(Cancel As Boolean)
Call DeleteMenu
End Sub

to delete custom menu before closing the workbook.
However, if a user changes mind and presses Cancel to keep workbook
open, the custom menu is deleted anyway!

How do you solver this problem?

Thank you.
Alseikhan


--
Alseikhan
------------------------------------------------------------------------
Alseikhan's Profile:
http://www.excelforum.com/member.php...o&userid=32364
View this thread:
http://www.excelforum.com/showthread...hreadid=529491






Doug Glancy

How to restore a Custom menu if a user presses Cancel after selcti
 
Alseikhan,

I should have said that Greg's method is better than my solution. My more
complicated method can be useful if your menus were built in an addin that's
opened with the workbook, but that doesn't seem to apply to what you are
doing.

Doug


"Greg Wilson" wrote in message
...
Typically I add controls to the Worksheet Menu Bar instead of making
custom
toolbars but the same holds for toolbars. I create them programmatically
on
wb_open and make them Temporary. I make them invisible on wb_deactivate
and
visible again on wb_activate. So when the application is closed, they are
deleted since they are Temporary. They are, of course, recreated when the
particular wb is opened.

If the user has more than one wb open then, if they activate a different
wb,
the commandbar is made invisible (wb_deactivate event) so that they cannot
run a macro that's inappropriate for the other wb. They are made visible
again when the user returns to the wb (wb_activate event).

Works fine so far.

Regards,
Greg

"Alseikhan" wrote:


A workbook has the subroutine attached to workbook:

Private Sub Workbook_BeforeClose(Cancel As Boolean)
Call DeleteMenu
End Sub

to delete custom menu before closing the workbook.
However, if a user changes mind and presses Cancel to keep workbook
open, the custom menu is deleted anyway!

How do you solver this problem?

Thank you.
Alseikhan


--
Alseikhan
------------------------------------------------------------------------
Alseikhan's Profile:
http://www.excelforum.com/member.php...o&userid=32364
View this thread:
http://www.excelforum.com/showthread...hreadid=529491






All times are GMT +1. The time now is 11:18 AM.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
ExcelBanter.com