View Single Post
  #6   Report Post  
Posted to microsoft.public.excel.programming
Dave Peterson Dave Peterson is offline
external usenet poster
 
Posts: 35,218
Default VBA code doesn't run when value selected from list

Maybe the code is running, but isn't doing what you want.

You use this:
(rng3.Value = "YES")
maybe you meant:
(ucase(rng3.Value) = "YES")



ivory_kitten wrote:

Hi Tom, I am using Excel 2003. I have never used xl97 for this project.

And yes it is a list using Data Validation.

"Tom Ogilvy" wrote:

Is the dropdown built using Data validation? If so, then what version of
Excel are you using. If xl97, the problem you describe did exist. In other
versions, there should not be a problem.

If not using data validation, then what type of control are you using?
Control toolbox Toolbar Combobox?
Dropdown box from the forms toolbar?

--
Regards,
Tom Ogilvy


"ivory_kitten" wrote:

i have a VBA code to show/hide rows depending on the value of a cell, the
values can either be selected from the list or typed in, my problem is when
the user selects the value from the list nothing happens, the code only
executes when typing and pressing enter.

Here's the code:

Private Sub Worksheet_Change(ByVal target As Range)
Application.ScreenUpdating = False
'Conditions & Ranges'
Dim rng As Range, rng2 As Range, rng3 As Range
Dim wf As WorksheetFunction
Dim cond1 As Boolean, cond2 As Boolean, cond3 As Boolean, cond4 As Boolean

Set wf = Application.WorksheetFunction
Set rng = Me.Range("OU1") 'Option 1'
Set rng2 = Me.Range("OU2") 'Option 2'
Set rng3 = Me.Range("OU3") 'Option 3'
cond1 = (UCase(rng3.Value) = "YES")
cond2 = (UCase(rng3.Value) = "NO")
cond3 = (UCase(rng2.Value) = "YES")
cond4 = (UCase(rng2.Value) = "NO")

'Hides Packing Prices'
[38:38, 47:47].EntireRow.Hidden = wf.And(cond2, cond4)
[37:37, 46:46].EntireRow.Hidden = wf.Or(wf.And(cond1, cond3),
wf.And(cond2, cond4))

'Hides depending on Type'
[9:9].EntireRow.Hidden = (rng3.Value = "YES")
[10:21, 35:35, 44:44].EntireRow.Hidden = (rng3.Value = "NO")
'Hides Option 2'
If Not Intersect(rng, target) Is Nothing Then
[36:36, 45:45].EntireRow.Hidden = IsEmpty(rng.Value)
End If
Application.ScreenUpdating = True
End Sub


--

Dave Peterson