J
james.billy
Hi,
I have a workbook with several user defined functions, whilst debugging
a sub routine (not a function) I noticed that the function was
recalculating even though I am on a different sheet and not changing
any of it precendents.
The function is:
Function SupplyPay(Contract_Type As String, ScalePt As Range, Payscales
As Range, Workhours As Variant, _
Workweeks As Double, Allowances As Double,
WhichYr As Integer) As Double
Dim k As Integer
Dim tmpHrs As Double, tmpPay As Double
k = WhichYr + 4
tmpHrs = Application.Average(Workhours)
tmpPay = Application.VLookup(ScalePt, Payscales, k, False)
If Contract_Type = "TA" Or Contract_Type = "NN" Then
SupplyPay = tmpPay * ((tmpHrs / 32.5) * (Workweeks / 52)) +
Allowances
Else
SupplyPay = tmpPay * tmpHrs / 37 * Workweeks / 52 + Allowances
End If
End Function
When I first wrote this the ScalePt argument was using the indirect
function which I know is volatile but I have subsequently rewritten
that function to avoid using it, which didn't stop this from
recalculating, finally I valued the ScalePt just to make sure but this
still recalculates when any calculation takes place. Any ideas, am I
doing something stupid? Am I right in thinking that this should only
recalculate when one of the arguments changes?
Any help will be very much appreciated,
Cheers,
James
I have a workbook with several user defined functions, whilst debugging
a sub routine (not a function) I noticed that the function was
recalculating even though I am on a different sheet and not changing
any of it precendents.
The function is:
Function SupplyPay(Contract_Type As String, ScalePt As Range, Payscales
As Range, Workhours As Variant, _
Workweeks As Double, Allowances As Double,
WhichYr As Integer) As Double
Dim k As Integer
Dim tmpHrs As Double, tmpPay As Double
k = WhichYr + 4
tmpHrs = Application.Average(Workhours)
tmpPay = Application.VLookup(ScalePt, Payscales, k, False)
If Contract_Type = "TA" Or Contract_Type = "NN" Then
SupplyPay = tmpPay * ((tmpHrs / 32.5) * (Workweeks / 52)) +
Allowances
Else
SupplyPay = tmpPay * tmpHrs / 37 * Workweeks / 52 + Allowances
End If
End Function
When I first wrote this the ScalePt argument was using the indirect
function which I know is volatile but I have subsequently rewritten
that function to avoid using it, which didn't stop this from
recalculating, finally I valued the ScalePt just to make sure but this
still recalculates when any calculation takes place. Any ideas, am I
doing something stupid? Am I right in thinking that this should only
recalculate when one of the arguments changes?
Any help will be very much appreciated,
Cheers,
James