Function Updates from another sheet

F

Floyd

I have the following function on Sheet1. I then go to Sheet2 and
change the one variable, which is the CounterMarker range value. On
Sheet2, I have a linked cell to the result of the calculation. It
reports #VALUE! When CounterMarker's value is changed. I then go
back to the sheet with the function and hit F9 it calculates just fine.

When I step through the code I see that the CounterMarker range is
empty when changed Sheet2, thus giving me the error message.

My question is how can I fix the function such that it can calculate
when I make changes to CounterMarker's value on Sheet2?

Variables:
'Current_Year = 2005 (fixed value)
'Year_First = 2005 (fixed value)
'DepreciationSchedule = 7 (fixed value)
'AmortizationFactors = 0.1429 (fixed value)
'EOFL - 2017 (fixed value)
'CounterMarker = range (value changes)

Function YearlyDepreciation(Current_Year As Double, Year_First As
Double, DepreciationSchedule As Integer _
, AmortizationFactors As Variant, EligibleDepreciation As Variant,
EOFL As Double, CounterMarker As Range) As Variant

Application.Volatile True
Application.Calculate
Dim Rng1 As Range
Dim Rng2 As Range
Dim Rng1Addr As String
Dim Rng2Addr As String
Dim YearDelta As Double
Dim LeftTextSegment1 As String
Dim RightTextSegment1 As String
Dim LeftTextSegment2 As String
Dim RightTextSegment2 As String

Set Rng1 = EligibleDepreciation
Set Rng2 = AmortizationFactors
YearDelta = Current_Year - Year_First

Rng1Addr =
EligibleDepreciation.Offset(-WorksheetFunction.Min(YearDelta,
DepreciationSchedule), 0) _
.Resize(WorksheetFunction.Min(YearDelta + 1,
DepreciationSchedule + 1), 1).Address

Rng2Addr = Rng2.Offset(-WorksheetFunction.Min(YearDelta,
DepreciationSchedule), 0) _
.Resize(WorksheetFunction.Min(YearDelta + 1,
DepreciationSchedule + 1), 1).Address

YearlyDepreciation =
Application.WorksheetFunction.SumProduct(Range(Rng1Addr),
Range(Rng2Addr))
End Function

Thanks in advance.

Floyd
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top