View Single Post
  #2   Report Post  
Posted to microsoft.public.excel.misc
Dave Peterson Dave Peterson is offline
external usenet poster
 
Posts: 35,218
Default Run macro if cell value changes

There's no Target passed to the worksheet_calculate() event.

You can have it run each time that that worksheet recalculates:

Private Sub Worksheet_Calculate()
Application.EnableEvents = False
Application.Run "Calculate_Stamp_Duty_PROPERTY_3"
Application.EnableEvents = True
End Sub

Or you could try to keep track of the previous value:

Private Sub Worksheet_Calculate()
Static OldValD9 as Variant

if me.range("D9").value = OldVald9 then
'do nothing, it didn't change
else
oldvald9 = me.range("d9").value
'then go off and do what you want
Application.EnableEvents = False
Application.Run "Calculate_Stamp_Duty_PROPERTY_3"
Application.EnableEvents = True
end if
End Sub

Brettjg wrote:

Well, we are getting there. With the following code the macro does get
triggered when I change the other workbook, but it gets a run time error of
"Object required (Error 424)"

Private Sub Worksheet_Calculate()
If Not Intersect(Target, Range("D9")) Is Nothing Then
Application.EnableEvents = False
Application.Run "Calculate_Stamp_Duty_PROPERTY_3"
Application.EnableEvents = True
End If
End Sub

Not being completely lazy, I did check the Help, but I don't understand it
(as I don't with justabout all VB help!). This is where I'm a bit dopey, you
see. I didn't even realise you could have two Private Subs in the one
worksheet. The other question is: I need to actually have 4 of these macros
in the sheet. I tried
Private Sub Worksheet_Calculate_1()

Private Sub Worksheet_Calculate_2()
etc but obviously the name of the PS is important because they didn't
trigger any action.

Thanks for your help so far, I think we've (you've?) nearly done it.
Regards Brett.


--

Dave Peterson