I have a range in a formula and it works:
=MAX(LN(A2:A7))
Now I want to rebuild this formula as a custom function and it does not work.
Function testy(xr As Range)
n = WorksheetFunction.Max(WorksheetFunction.Ln(xr))
testy = n
End Function
It throws an error: wrong datatype. But I defined "As Range"? Why does it not work, how can I correct it?
CodePudding user response:
Use Application.Ln.
The issue is that WorksheetFunction.Ln accepts a Double as its argument. You're implicitly passing it the .Value of a multi-cell range, which is a Variant array.
Using the late-bound Application.Ln, one can pass an array (and get an array back):
Function testy(ByVal xr As Range) As Double
testy = WorksheetFunction.Max(Application.Ln(xr))
End Function


