ExcelBanter

ExcelBanter (https://www.excelbanter.com/)
-   Excel Discussion (Misc queries) (https://www.excelbanter.com/excel-discussion-misc-queries/)
-   -   Conditional Hide/Unhide Rows (https://www.excelbanter.com/excel-discussion-misc-queries/19239-conditional-hide-unhide-rows.html)

Gwen H

Conditional Hide/Unhide Rows
 
I am working with a workbook that has one worksheet only. I want all rows
visible when the user opens the file. However, In cell B10, I have a
drop-down list I'm generating with data validation. The only values are YES
or NO, and YES is initially selected. If the user selects YES, then I want
the entire worksheet to remain visible. If the user selects NO, then I want
to hide rows 11 through 50, and display an error message entered in row 51.

Using previous posts, I've begun the code, but I know it's missing some
things.

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$B$10" And Target.Value = "YES" Then
Range("B11").Select
ElseIf Target.Address = "$B$10" And Target.Value = "NO" Then
Rows("11:50").Select
Selection.EntireRow.Hidden = True
Range("A51").Select
End If
End Sub

Any help you can give me would be greatly appreciated.

John Mansfield

Gwen, try . . .

Sub HideRows()
Dim Rng As Range
Set Rng = Sheets("Sheet1").Range("B10")
If Rng.Value = "YES" Then
Rows("11:50").EntireRow.Hidden = False
Range("B11").Select
ElseIf Rng.Value = "NO" Then
Rows("11:50").EntireRow.Hidden = True
Range("B51").Select
MsgBox "Your Error Message"
End If
End Sub

You can tie this macro to the drop-down list control. If using the
drop-down from the forms toolbar, right-click on the control and go to the
Assign Macro option.

----
Regards,
John Mansfield
http://www.pdbook.com


"Gwen H" wrote:

I am working with a workbook that has one worksheet only. I want all rows
visible when the user opens the file. However, In cell B10, I have a
drop-down list I'm generating with data validation. The only values are YES
or NO, and YES is initially selected. If the user selects YES, then I want
the entire worksheet to remain visible. If the user selects NO, then I want
to hide rows 11 through 50, and display an error message entered in row 51.

Using previous posts, I've begun the code, but I know it's missing some
things.

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$B$10" And Target.Value = "YES" Then
Range("B11").Select
ElseIf Target.Address = "$B$10" And Target.Value = "NO" Then
Rows("11:50").Select
Selection.EntireRow.Hidden = True
Range("A51").Select
End If
End Sub

Any help you can give me would be greatly appreciated.


Trevor Shuttleworth


Gwen

one way:

Private Sub Worksheet_Change(ByVal Target As Range)
With Target
If .Address = "$B$10" And UCase(.Value) = "YES" Then
Rows("11:50").EntireRow.Hidden = False
Range("B11").Select
ElseIf .Address = "$B$10" And UCase(.Value) = "NO" Then
Rows("11:50").EntireRow.Hidden = True
Range("A51").Select
End If
End With
End Sub

Regards

Trevor


"Gwen H" <Gwen wrote in message
...
I am working with a workbook that has one worksheet only. I want all rows
visible when the user opens the file. However, In cell B10, I have a
drop-down list I'm generating with data validation. The only values are
YES
or NO, and YES is initially selected. If the user selects YES, then I want
the entire worksheet to remain visible. If the user selects NO, then I
want
to hide rows 11 through 50, and display an error message entered in row
51.

Using previous posts, I've begun the code, but I know it's missing some
things.

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$B$10" And Target.Value = "YES" Then
Range("B11").Select
ElseIf Target.Address = "$B$10" And Target.Value = "NO" Then
Rows("11:50").Select
Selection.EntireRow.Hidden = True
Range("A51").Select
End If
End Sub

Any help you can give me would be greatly appreciated.




Gwen H

Thanks! It works like magic.

"Trevor Shuttleworth" wrote:


Gwen

one way:

Private Sub Worksheet_Change(ByVal Target As Range)
With Target
If .Address = "$B$10" And UCase(.Value) = "YES" Then
Rows("11:50").EntireRow.Hidden = False
Range("B11").Select
ElseIf .Address = "$B$10" And UCase(.Value) = "NO" Then
Rows("11:50").EntireRow.Hidden = True
Range("A51").Select
End If
End With
End Sub

Regards

Trevor


"Gwen H" <Gwen wrote in message
...
I am working with a workbook that has one worksheet only. I want all rows
visible when the user opens the file. However, In cell B10, I have a
drop-down list I'm generating with data validation. The only values are
YES
or NO, and YES is initially selected. If the user selects YES, then I want
the entire worksheet to remain visible. If the user selects NO, then I
want
to hide rows 11 through 50, and display an error message entered in row
51.

Using previous posts, I've begun the code, but I know it's missing some
things.

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$B$10" And Target.Value = "YES" Then
Range("B11").Select
ElseIf Target.Address = "$B$10" And Target.Value = "NO" Then
Rows("11:50").Select
Selection.EntireRow.Hidden = True
Range("A51").Select
End If
End Sub

Any help you can give me would be greatly appreciated.





Trevor Shuttleworth

Your'e welcome. Thanks for the feedback.


"Gwen H" wrote in message
...
Thanks! It works like magic.

"Trevor Shuttleworth" wrote:


Gwen

one way:

Private Sub Worksheet_Change(ByVal Target As Range)
With Target
If .Address = "$B$10" And UCase(.Value) = "YES" Then
Rows("11:50").EntireRow.Hidden = False
Range("B11").Select
ElseIf .Address = "$B$10" And UCase(.Value) = "NO" Then
Rows("11:50").EntireRow.Hidden = True
Range("A51").Select
End If
End With
End Sub

Regards

Trevor


"Gwen H" <Gwen wrote in message
...
I am working with a workbook that has one worksheet only. I want all
rows
visible when the user opens the file. However, In cell B10, I have a
drop-down list I'm generating with data validation. The only values are
YES
or NO, and YES is initially selected. If the user selects YES, then I
want
the entire worksheet to remain visible. If the user selects NO, then I
want
to hide rows 11 through 50, and display an error message entered in row
51.

Using previous posts, I've begun the code, but I know it's missing some
things.

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$B$10" And Target.Value = "YES" Then
Range("B11").Select
ElseIf Target.Address = "$B$10" And Target.Value = "NO" Then
Rows("11:50").Select
Selection.EntireRow.Hidden = True
Range("A51").Select
End If
End Sub

Any help you can give me would be greatly appreciated.








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

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