Sorry I should have thought of that.
Also, in retrospect it would be much (much) better to pass CURRENT_YEAR named range as an argument in the UDF call so as to make it a direct precedent
(altering CURRENT_YEAR would in turn recalculate all cells using the UDF without need for Volatility)
Function SplitYears(rngY As String, rngCY As Range, Optional strDelim As String = "-") As String
Dim vYrs As Variant
On Error GoTo Handler:
vYrs = Split(rngY, strDelim)
If UBound(vYrs) = 0 Then
SplitYears = vYrs(0)
Else
If Not IsNumeric(vYrs(1)) Then vYrs(1) = rngCY(1)
vYrs = Evaluate("TRANSPOSE(ROW(" & vYrs(0) & ":" & vYrs(1) & "))")
SplitYears = Join(vYrs, ",")
End If
Exit Function
Handler:
SplitYears = "Invalid"
End Function
Now called with additional parameter, eg:
=SPLITYEARS(A1,CURRENT_YEAR)
Bookmarks