Try...
Private Sub Worksheet_Change(ByVal Target As Range)
'This is the same for both
If Target.Cells.Count 1 Then Exit Sub
If Target.Value = "" Then Range("7:90,91:186").Rows.Hidden = False
'Store values, row refs
Const sValuesB5$ = "Dragline|Shovel|Aux|DraglineNP"
Const sRowsToHideB5$ = "91:186|7:90,142:186|7:141,163:186|7:162"
Const sRowsToUnhideB5$ = "7:90|91:141|142:162|163:186"
Const sValuesE5$ = "Unknown|Olex|Pirelli|Amercable|Prysmian|MM
Cables"
Const sRowsToHideE5$ =
"11:186|7:10,21:186|7:30,41:186|7:40,51:186|7: 50"
Const sRowsToUnhideE5$ = "7:10|11:20|21:30|31:40|41:50|51:162"
Dim aValues, aRowsToHide, aRowsToUnhide, n&
'Dtermine which cell changed
Select Case Target.Address
Case "$B$5"
aValues = Split(sValuesB5, "|")
aRowsToHide = Split(sRowsToHideB5, "|")
aRowsToUnhide = Split(sRowsToUnhideB5, "|")
GoTo HideUnhideRows
Case "$E$5"
aValues = Split(sValuesE5, "|")
aRowsToHide = Split(sRowsToHideE5, "|")
aRowsToUnhide = Split(sRowsToUnhideE5, "|")
GoTo HideUnhideRows
End Select 'Case Target.Address
Normalexit:
Exit Sub
HideUnhideRows:
Application.EnableEvents = False
For n = LBound(aValues) To UBound(aValues)
If Target.Value = aValues(n) Then
Range(aRowsToUnhide(n)).Rows.Hidden = False
Range(aRowsToHide(n)).Rows.Hidden = True
End If
Next
Application.EnableEvents = True
End Sub
--
Garry
Free usenet access at
http://www.eternal-september.org
Classic
VB Users Regroup!
comp.lang.basic.visual.misc
microsoft.public.
vb.general.discussion