Sub unHideSheets()
Dim sheetName(19) As String
For x = 1 To 19 Step 1
sheetName(x) = Sheets(1).Cells(x, 1)
If Cells(x, 2).Value = "YES" Then
Sheets(sheetName(x)).Visible = False
Else
Sheets(sheetName(x)).Visible = True
End If
Next x
End Sub
A | B | |
1 | Name1 | YES |
2 | Name2 | YES |
3 | Name3 | |
... | ... | |
18 | Name18 | |
19 | Name19 | YES |
There must be at least one visible sheet in a workbook - you need an error trap in case all sheets are listed as YES.Code:Sub unHideSheets() Dim sheetName(19) As String For x = 1 To 19 Step 1 sheetName(x) = Sheets(1).Cells(x, 1) If Cells(x, 2).Value = "YES" Then Sheets(sheetName(x)).Visible = False Else Sheets(sheetName(x)).Visible = True End If Next x End Sub
I don't think this is want you want, but it's what I have assumed based on your detail. This will take the first sheet in your workbook and hide things based on a table such as below.
A B 1 Name1 YES 2 Name2 YES 3 Name3 ... ... 18 Name18 19 Name19 YES
<tbody>
</tbody>
That wasn't clear from your post which shows the first sheet of 19 as YES.I'm assuming that sheet1 will never be hidden and therefore not included on the list.
Private Sub Worksheet_Change(ByVal Target As Range)
Dim hideVal As Integer
Dim showVal As Integer
With Sheets("Job Setup")
For x = 16 To 23 Step 1
If UCase(.Cells(16, 3)) = "NO" Then
hideVal = x
GoTo Hide
Else
showVal = x
GoTo Show
End If
more:
Next x
End With
Exit Sub
Hide:
Select Case hideVal
Case 16
Sheets("SheetNameHere").Visible = False
Sheets("SheetNameHere").Visible = False
Case 17
Sheets("SheetNameHere").Visible = False
Sheets("SheetNameHere").Visible = False
Case 18
Sheets("SheetNameHere").Visible = False
Sheets("SheetNameHere").Visible = False
Case 19
Sheets("SheetNameHere").Visible = False
Sheets("SheetNameHere").Visible = False
Case 20
Sheets("SheetNameHere").Visible = False
Sheets("SheetNameHere").Visible = False
Case 21
Sheets("SheetNameHere").Visible = False
Sheets("SheetNameHere").Visible = False
Case 22
Sheets("SheetNameHere").Visible = False
Sheets("SheetNameHere").Visible = False
Case 23
Sheets("SheetNameHere").Visible = False
Sheets("SheetNameHere").Visible = False
Case Else
End Select
GoTo more
Show:
Select Case showVal
Case 16
Sheets("SheetNameHere").Visible = True
Sheets("SheetNameHere").Visible = True
Case 17
Sheets("SheetNameHere").Visible = True
Sheets("SheetNameHere").Visible = True
Case 18
Sheets("SheetNameHere").Visible = True
Sheets("SheetNameHere").Visible = True
Case 19
Sheets("SheetNameHere").Visible = True
Sheets("SheetNameHere").Visible = True
Case 20
Sheets("SheetNameHere").Visible = True
Sheets("SheetNameHere").Visible = True
Case 21
Sheets("SheetNameHere").Visible = True
Sheets("SheetNameHere").Visible = True
Case 22
Sheets("SheetNameHere").Visible = True
Sheets("SheetNameHere").Visible = True
Case 23
Sheets("SheetNameHere").Visible = True
Sheets("SheetNameHere").Visible = True
Case Else
End Select
GoTo more
End Sub