Home | Contact Us | FAQ | Search & Site Map | Link to Us
Sign In | Join | Other 45 Sites in Network
Home
DiscussionsAccessExcelInfoPathOutlookPowerPointPublisherWord
DirectoryUser Groups
Related Topics
Outlook ExpressInternet ExplorerWindowsMS Server ProductsMore Topics ...

MS Office Forum / Excel / Programming / January 2006

Tip: Looking for answers? Try searching our database.

Worksheet Change Event With Validation List

Thread view: 
Enable EMail Alerts  Start New Thread
Thread rating: 
Kris_Wright_77 - 24 Jan 2006 15:17 GMT
I am in the middle of writing a macro that runs on any change to a specific
cell containing a validation list.

I tested that it worked with each bit of extra code that I added, and it
worked fine for a while, but then it started to crash Excel and I cant find
out what caused it.

And even more peculiar, if I start writing from scratch, the event is no
longer triggered by changing the cell by the Validation list.

I have attached the offending code, in case there is something there that
has altered a setting within Excel that I am not aware of.
If I create a Change Event in a new workbook it works with the Validation
List, so cant be the fact that I have Excel 2002.

Thanks for any help that you can give

Kris

Private Sub Worksheet_Change(ByVal Target As Range)
Application.EnableEvents = False

If Target.Address = Range("PF_ContractType").Address Then
   Select Case Target.Value
       Case "Fixed Price"
       'Multiplier Label Change
       With Range("PF_MultiplierLabel")
           .Value = "Labour Revenue Multiplier on Bare"
           .Font.Bold = True
           .Font.ColorIndex = 0
           .Font.Italic = False
       End With
       'Remove Equivalent Multiplier Formula
       With Range("PF_Multiplier")
           .Value = Null
           .Locked = False
       End With

       Case "Time Charge"
       'Multiplier Label Change
       With Range("PF_MultiplierLabel")
           .Value = "Equivalent Labour Revenue Multiplier on Bare"
           .Font.Bold = False
           .Font.ColorIndex = 48
           .Font.Italic = True
       End With
       'Add In Equivalent Multiplier Formula
       With Range("PF_Multiplier")
           .Formula =
"=IF(SUM(PF_BareLabour,(PF_ContractLabour/PF_BurdenMultiplier))=0,,PF_TotalLabour_Rev/SUM(PF_BareLabour,(PF_ContractLabour/PF_BurdenMultiplier)))"
           .Locked = True
       End With
       Case Else
       'Nothing
   End Select
End If
Application.EnableEvents = True
End Sub
Tom Ogilvy - 24 Jan 2006 15:29 GMT
If you enter that formula manually, does it work?

As far as the event not firing, I suspect you have an error in your code, so
when the event end prematurely, events are disabled.

Signature

Regards,
Tom Ogilvy

> I am in the middle of writing a macro that runs on any change to a specific
> cell containing a validation list.
[quoted text clipped - 45 lines]
>         With Range("PF_Multiplier")
>             .Formula =

"=IF(SUM(PF_BareLabour,(PF_ContractLabour/PF_BurdenMultiplier))=0,,PF_TotalL
abour_Rev/SUM(PF_BareLabour,(PF_ContractLabour/PF_BurdenMultiplier)))"
>             .Locked = True
>         End With
[quoted text clipped - 4 lines]
> Application.EnableEvents = True
> End Sub
Kris_Wright_77 - 24 Jan 2006 15:53 GMT
Tom
Thanks for the quick response.

The Formula works fine if entered manually, as that was where I created it
initially. Its just that under certain conditions the formula isnt
appropriate.
Although it was when I tested that the macro would correctly insert the
formula that the event last fired using a validation list

I initially did think that it was because the code ended prematurely with
the events off, but I have run a macro to turn them back on, and it still
doesnt fire on a change using a validation list, but will on anything entered
manually.

I have also done some further testing, and it seems that the problem is
confined to just the one sheet in the book.
I have added some change events to another sheet in the workbook, and they
fire properly when using a Validation list.

I presume I have inadvertently changed a property of the worksheet, but I
cant find it anywhere.

Thanks for any further help that you can give.

Kris

> If you enter that formula manually, does it work?
>
[quoted text clipped - 63 lines]
> > Application.EnableEvents = True
> > End Sub
Tom Ogilvy - 24 Jan 2006 15:58 GMT
Try running Rob Bovey's code cleaner utility on your workbook.  It is a free
download at

http://www.appspro.com

If that doesn't fix it, then it might be time to think about replacing the
sheet as a minimum or moving everything to a new workbook.

Signature

Regards,
Tom Ogilvy

> Tom
> Thanks for the quick response.
[quoted text clipped - 78 lines]
> > >         With Range("PF_Multiplier")
> > >             .Formula =

"=IF(SUM(PF_BareLabour,(PF_ContractLabour/PF_BurdenMultiplier))=0,,PF_TotalL
> > abour_Rev/SUM(PF_BareLabour,(PF_ContractLabour/PF_BurdenMultiplier)))"
> > >             .Locked = True
[quoted text clipped - 5 lines]
> > > Application.EnableEvents = True
> > > End Sub
Kris_Wright_77 - 24 Jan 2006 17:41 GMT
Tom

I ran the code cleaner, and it didn't help.

So resorted to making a copy of the problem sheet, and discovered that it
relates to the Conditional Formatting that I had applied to range with the
formula.
Once I deleted the Conditional Formatting from the original sheet, the
change event started running again with the validation list.

I dont understand why it should make a difference, unless the UDF I have is
incorrect.
Function IsFormula(Cell)
   Application.Volatile
   IsFormula = Cell.HasFormula
End Function

But for now I will just use code to change the format.

Thanks for all your help

Kris

> Try running Rob Bovey's code cleaner utility on your workbook.  It is a free
> download at
[quoted text clipped - 3 lines]
> If that doesn't fix it, then it might be time to think about replacing the
> sheet as a minimum or moving everything to a new workbook.
Kris - 24 Jan 2006 16:59 GMT
Kris.

Worksheet_change event doesn't work correctly if you change value from
drop down list.
It works if you type value manually.
It' s a bug in excel since I even don't rememeber and nobody wants to
fix it.

> I am in the middle of writing a macro that runs on any change to a specific
> cell containing a validation list.
[quoted text clipped - 54 lines]
> Application.EnableEvents = True
> End Sub
 
Sign In
Join
My Latest Posts
My Monitored Threads
My Blog
My Photo Gallery
My Profile
My Homepage

Start New Thread
Enable EMail Alerts
Rate this Thread



©2008 Advenet LLC   Privacy Policy - Terms of Use
This website includes both content owned or controlled by Advenet as well as content owned or controlled by third parties.