I think the issue is that Excel needs to the workbook to have at least one worksheet visible at all times.
So, if it change the code slightly so that the unhiding happens first, and the hiding happens last, it should work.
Try this:
VBA Code:
PrivateSub Workbook_Open()Dim ws As Worksheet
ForEach ws In Worksheets
If ws.Name <>"INTRO"Then ws.Visible = xlSheetVisible
Next ws
' Hide INTRO sheetSet ws = Sheets("INTRO")
ws.Visible = xlSheetHidden
EndSubPrivateSub Workbook_BeforeClose(Cancel AsBoolean)Dim ws As Worksheet
' Unhide INTRO sheet firstSet ws = Sheets("INTRO")
ws.Visible = xlSheetVisible
ForEach ws In Worksheets
If ws.Name <>"INTRO"Then ws.Visible = xlSheetHidden
Next ws
EndSub
We have a great community of people providing Excel help here, but the hosting costs are enormous. You can help keep this site running by allowing ads on MrExcel.com.
Allow Ads at MrExcel
Which adblocker are you using?
Disable AdBlock
Follow these easy steps to disable AdBlock
1)Click on the icon in the browser’s toolbar. 2)Click on the icon in the browser’s toolbar. 2)Click on the "Pause on this site" option.
Go back
Disable AdBlock Plus
Follow these easy steps to disable AdBlock Plus
1)Click on the icon in the browser’s toolbar. 2)Click on the toggle to disable it for "mrexcel.com".
Go back
Disable uBlock Origin
Follow these easy steps to disable uBlock Origin
1)Click on the icon in the browser’s toolbar. 2)Click on the "Power" button. 3)Click on the "Refresh" button.
Go back
Disable uBlock
Follow these easy steps to disable uBlock
1)Click on the icon in the browser’s toolbar. 2)Click on the "Power" button. 3)Click on the "Refresh" button.