A Microsoft Office (Excel, Word) forum. OfficeFrustration

If this is your first visit, be sure to check out the FAQ by clicking the link above. You may have to register before you can post: click the register link above to proceed. To start viewing messages, select the forum that you want to visit from the selection below.

Go Back   Home » OfficeFrustration forum » Microsoft Excel » Worksheet Functions
Site Map Home Register Authors List Search Today's Posts Mark Forums Read  

Hide a sheet with a variable name



 
 
Thread Tools Display Modes
  #1  
Old July 9th, 2008, 12:32 AM posted to microsoft.public.excel.worksheet.functions
Scott
external usenet poster
 
Posts: 1,119
Default Hide a sheet with a variable name

G'Day

I am trying to hide a sheet(s) based on a cell value. I have found an old
post thats uses:

Private Sub Worksheet_Change(ByVal Target As Range)
Dim sh As Worksheet
If Not Application.Intersect(Range("B8"), Target) Is Nothing Then
For Each sh In Sheets(Array("Sheet2"))
If Target.Value = "" Then sh.Visible = xlSheetHidden
If Target.Value "" Then sh.Visible = xlSheetVisible
Next sh
End If
End Sub

and this works perfectly. EXCEPT... my problem is that my sheet names change
(in this case Sheet2) depending on the value of other cells in the workbook.
The +ve side is that all the info for the sheet names and wether to hide
other sheets is contained on a single worksheet (called Front Page)

can anybody help?

Thanks

Scott
  #2  
Old July 9th, 2008, 06:13 AM posted to microsoft.public.excel.worksheet.functions
Héctor Miguel
external usenet poster
 
Posts: 298
Default Hide a sheet with a variable name

hi, Scott !

let's suppose in "Front Page" sheet you put the names for the worksheets to hide/show in B3:B4 range

Private Sub Worksheet_Change(ByVal Target As Range)
Dim myCell As Range
Application.ScreenUpdating = False
If Target.Address "$B$8" Then Exit Sub
For Each myCell In Range("b3:b4")
Worksheets(myCell.Text).Visible = Range("b8") ""
Next
End Sub

hth,
hector.

__ OP __
I am trying to hide a sheet(s) based on a cell value. I have found an old post thats uses:

Private Sub Worksheet_Change(ByVal Target As Range)
Dim sh As Worksheet
If Not Application.Intersect(Range("B8"), Target) Is Nothing Then
For Each sh In Sheets(Array("Sheet2"))
If Target.Value = "" Then sh.Visible = xlSheetHidden
If Target.Value "" Then sh.Visible = xlSheetVisible
Next sh
End If
End Sub

and this works perfectly. EXCEPT... my problem is that my sheet names change (in this case Sheet2)
depending on the value of other cells in the workbook.
The +ve side is that all the info for the sheet names and wether to hide other sheets
is contained on a single worksheet (called Front Page)



  #3  
Old July 11th, 2008, 01:58 AM posted to microsoft.public.excel.worksheet.functions
Scott
external usenet poster
 
Posts: 1,119
Default Hide a sheet with a variable name

G'Day Héctor

Thanks for the code it works quite well. I extended and moved the range from
B3:B4 to A3:A10 and it still worked fine. However it (un)hides all the
sheets in the range. What I need to do is be able to show/hide individual
sheets (names in range A3:A10) depnding on whether or not the corresonponing
target cell in range B3:10 has an entry? ie if B7 is a null value (which is
the default) then hide the sheet name, based on A7

Thanks

Scott

"Miguel" wrote:

hi, Scott !

let's suppose in "Front Page" sheet you put the names for the worksheets to hide/show in B3:B4 range

Private Sub Worksheet_Change(ByVal Target As Range)
Dim myCell As Range
Application.ScreenUpdating = False
If Target.Address "$B$8" Then Exit Sub
For Each myCell In Range("b3:b4")
Worksheets(myCell.Text).Visible = Range("b8") ""
Next
End Sub

hth,
hector.

__ OP __
I am trying to hide a sheet(s) based on a cell value. I have found an old post thats uses:

Private Sub Worksheet_Change(ByVal Target As Range)
Dim sh As Worksheet
If Not Application.Intersect(Range("B8"), Target) Is Nothing Then
For Each sh In Sheets(Array("Sheet2"))
If Target.Value = "" Then sh.Visible = xlSheetHidden
If Target.Value "" Then sh.Visible = xlSheetVisible
Next sh
End If
End Sub

and this works perfectly. EXCEPT... my problem is that my sheet names change (in this case Sheet2)
depending on the value of other cells in the workbook.
The +ve side is that all the info for the sheet names and wether to hide other sheets
is contained on a single worksheet (called Front Page)




  #4  
Old July 11th, 2008, 03:51 AM posted to microsoft.public.excel.worksheet.functions
Héctor Miguel
external usenet poster
 
Posts: 298
Default Hide a sheet with a variable name

hi, Scott !

Thanks for the code it works quite well.
I extended and moved the range from B3:B4 to A3:A10 and it still worked fine.
However it (un)hides all the sheets in the range.
What I need to do is be able to show/hide individual sheets (names in range A3:A10)
depnding on whether or not the corresonponing target cell in range B3:10 has an entry?
ie if B7 is a null value (which is the default) then hide the sheet name, based on A7


perhaps...

Private Sub Worksheet_Change(ByVal Target As Range)
Dim myCell As Range
Application.ScreenUpdating = False
If Intersect(Target, Range("b3:b10")) Is Nothing Then Exit Sub
For Each myCell In Intersect(Target, Range("b3:b10"))
Worksheets(myCell.Offset(, -1).Text).Visible = myCell ""
Next
End Sub

hth,
hector.


  #5  
Old July 11th, 2008, 08:21 AM posted to microsoft.public.excel.worksheet.functions
Scott
external usenet poster
 
Posts: 1,119
Default Hide a sheet with a variable name

Héctor

Thanks a lot it works perfectly

Scott

"Héctor Miguel" wrote:

hi, Scott !

Thanks for the code it works quite well.
I extended and moved the range from B3:B4 to A3:A10 and it still worked fine.
However it (un)hides all the sheets in the range.
What I need to do is be able to show/hide individual sheets (names in range A3:A10)
depnding on whether or not the corresonponing target cell in range B3:10 has an entry?
ie if B7 is a null value (which is the default) then hide the sheet name, based on A7


perhaps...

Private Sub Worksheet_Change(ByVal Target As Range)
Dim myCell As Range
Application.ScreenUpdating = False
If Intersect(Target, Range("b3:b10")) Is Nothing Then Exit Sub
For Each myCell In Intersect(Target, Range("b3:b10"))
Worksheets(myCell.Offset(, -1).Text).Visible = myCell ""
Next
End Sub

hth,
hector.



 




Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

vB code is On
Smilies are On
[IMG] code is Off
HTML code is Off
Forum Jump


All times are GMT +1. The time now is 06:59 PM.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Copyright ©2004-2024 OfficeFrustration.
The comments are property of their posters.