Home |
Search |
Today's Posts |
#1
Posted to microsoft.public.excel.programming
|
|||
|
|||
Workbook close error
I have the following code, that produces an error 400 when the macro
sub routine is run by itself. What I want it to do, is out a number of sheets in a workbook, when the workbook closes, all sheets will be veryhidden except one called "Welcome". As you can probably tell, I am trying to make use of the 'force macros' style of hiding important sheets before macros are enabled. If macros are disabled, then the only sheet visible will "Welcome" ----------------------------------------- Sub workbook_before_close() Dim ws As Worksheet For Each ws In ThisWorkbook.Worksheets ws.Visible = xlVeryHidden Next ws Call Show_Welcome Application.SaveWorkspace End Sub ----------------------------------------- What is the problem with what I have typed? Is there a better way of hiding a range of sheets that are not called Welcome? All comments are welcomed (as is any replacement code!) |
#2
Posted to microsoft.public.excel.programming
|
|||
|
|||
Workbook close error
It's a distinct limitation for xls files: At least one sheet must be
visible. So you can't hide all and then show one. Modify to something like ThisWorkbook.Sheets("Welcome").visible = true For Each ws In ThisWorkbook.Worksheets if ws.name < "Welcome" then ws.Visible = xlVeryHidden Next ws Note also that the workbook must be unprotected before you change sheet visibility. HTH. best wishes Harald "Rich" skrev i melding m... I have the following code, that produces an error 400 when the macro sub routine is run by itself. What I want it to do, is out a number of sheets in a workbook, when the workbook closes, all sheets will be veryhidden except one called "Welcome". As you can probably tell, I am trying to make use of the 'force macros' style of hiding important sheets before macros are enabled. If macros are disabled, then the only sheet visible will "Welcome" ----------------------------------------- Sub workbook_before_close() Dim ws As Worksheet For Each ws In ThisWorkbook.Worksheets ws.Visible = xlVeryHidden Next ws Call Show_Welcome Application.SaveWorkspace End Sub ----------------------------------------- What is the problem with what I have typed? Is there a better way of hiding a range of sheets that are not called Welcome? All comments are welcomed (as is any replacement code!) |
#3
Posted to microsoft.public.excel.programming
|
|||
|
|||
Workbook close error
Hi Rich,
You cannot have all sheets hidden. so your code bombs on trying to hide the last one, before the call to show the Welcome sheet Try this amendment Sub workbook_before_close() Dim ws As Worksheet For Each ws In ThisWorkbook.Worksheets ws.Visible = (ws.Name < "Welcome") * -1 - 1 Next ws Application.SaveWorkspace End Sub -- HTH RP "Rich" wrote in message m... I have the following code, that produces an error 400 when the macro sub routine is run by itself. What I want it to do, is out a number of sheets in a workbook, when the workbook closes, all sheets will be veryhidden except one called "Welcome". As you can probably tell, I am trying to make use of the 'force macros' style of hiding important sheets before macros are enabled. If macros are disabled, then the only sheet visible will "Welcome" ----------------------------------------- Sub workbook_before_close() Dim ws As Worksheet For Each ws In ThisWorkbook.Worksheets ws.Visible = xlVeryHidden Next ws Call Show_Welcome Application.SaveWorkspace End Sub ----------------------------------------- What is the problem with what I have typed? Is there a better way of hiding a range of sheets that are not called Welcome? All comments are welcomed (as is any replacement code!) |
#4
Posted to microsoft.public.excel.programming
|
|||
|
|||
Workbook close error
This will err if Welcome is the last sheet. (But it probably isn't :-)
Best wishes Harald "Bob Phillips" skrev i melding ... Sub workbook_before_close() Dim ws As Worksheet For Each ws In ThisWorkbook.Worksheets ws.Visible = (ws.Name < "Welcome") * -1 - 1 Next ws Application.SaveWorkspace End Sub |
#5
Posted to microsoft.public.excel.programming
|
|||
|
|||
Workbook close error
It didn't for me Harald, I tested with Welcome as the last sheet.
-- HTH RP "Harald Staff" wrote in message ... This will err if Welcome is the last sheet. (But it probably isn't :-) Best wishes Harald "Bob Phillips" skrev i melding ... Sub workbook_before_close() Dim ws As Worksheet For Each ws In ThisWorkbook.Worksheets ws.Visible = (ws.Name < "Welcome") * -1 - 1 Next ws Application.SaveWorkspace End Sub |
#6
Posted to microsoft.public.excel.programming
|
|||
|
|||
Workbook close error
Then it was either not last from the collection point of view, or already
visible, or you have a visible chart sheet or similar besides the worksheets. "You need macros enabled" sheets are often hidden after the code unhid the others. Sub test() Dim S As String, WS As Worksheet S = Worksheets(Worksheets.Count).Name Worksheets(S).Visible = xlVeryHidden For Each WS In ThisWorkbook.Worksheets WS.Visible = (WS.Name < S) * -1 - 1 Next WS End Sub But as stated; probably no big deal. Best wishes Harald "Bob Phillips" skrev i melding ... It didn't for me Harald, I tested with Welcome as the last sheet. -- HTH RP "Harald Staff" wrote in message ... This will err if Welcome is the last sheet. (But it probably isn't :-) Best wishes Harald "Bob Phillips" skrev i melding ... Sub workbook_before_close() Dim ws As Worksheet For Each ws In ThisWorkbook.Worksheets ws.Visible = (ws.Name < "Welcome") * -1 - 1 Next ws Application.SaveWorkspace End Sub |
#7
Posted to microsoft.public.excel.programming
|
|||
|
|||
Workbook close error
Yes it was already visible, but I don't recall seeing anything from the OP
that it wouldn't be. -- HTH RP "Harald Staff" wrote in message ... Then it was either not last from the collection point of view, or already visible, or you have a visible chart sheet or similar besides the worksheets. "You need macros enabled" sheets are often hidden after the code unhid the others. Sub test() Dim S As String, WS As Worksheet S = Worksheets(Worksheets.Count).Name Worksheets(S).Visible = xlVeryHidden For Each WS In ThisWorkbook.Worksheets WS.Visible = (WS.Name < S) * -1 - 1 Next WS End Sub But as stated; probably no big deal. Best wishes Harald "Bob Phillips" skrev i melding ... It didn't for me Harald, I tested with Welcome as the last sheet. -- HTH RP "Harald Staff" wrote in message ... This will err if Welcome is the last sheet. (But it probably isn't :-) Best wishes Harald "Bob Phillips" skrev i melding ... Sub workbook_before_close() Dim ws As Worksheet For Each ws In ThisWorkbook.Worksheets ws.Visible = (ws.Name < "Welcome") * -1 - 1 Next ws Application.SaveWorkspace End Sub |
#8
Posted to microsoft.public.excel.programming
|
|||
|
|||
Workbook close error
OP said "What is the problem with what I have typed?"; we should consider
everything and assume nothing. HTH. Best wishes Harald "Bob Phillips" skrev i melding ... Yes it was already visible, but I don't recall seeing anything from the OP that it wouldn't be. -- HTH RP "Harald Staff" wrote in message ... Then it was either not last from the collection point of view, or already visible, or you have a visible chart sheet or similar besides the worksheets. "You need macros enabled" sheets are often hidden after the code unhid the others. |
Reply |
Thread Tools | Search this Thread |
Display Modes | |
|
|
Similar Threads | ||||
Thread | Forum | |||
run-time error '91'-Close Button error | Excel Discussion (Misc queries) | |||
commandbar at workbook before close - run time error | Excel Programming | |||
commandbar at workbook before close - run time error | Excel Programming | |||
Close a the current workbook and load another specified workbook | Excel Programming | |||
When running workbook.close True Excel generates an error!!! | Excel Programming |