LN in UDF

A

Arne Hegefors

Hi! I am trying to write a UDF. The function works fine if I just write it as
a worksheet function. For several reasons I need it as a UDF though. Excel
tells me "Sub or function not defined" where Ln is. How am I supposed to
write this? It looks fine to me..Ay help appreciated!

Public Function Kupiec(p As Double, T As Double, N As Double) As Double
Dim a As Double
Dim b As Double

a = -2 * Ln((1 - p) ^ (T - N) * p ^ N)
b = 2 * Ln(1 - (N / T)) ^ (T - N) * (N / T) ^ N

Kupiec = a + b

End Function
 
R

Rick Rothstein \(MVP - VB\)

One of those "differences" between the spreadsheet world and the VBA world... in the VBA world, the natural log function is Log, not Ln. Just make that change and your code should work fine.

Rick
 
P

Peter T

I'm glad Rick replied before me!

Besides his observation, the reason Ln failed is the function does not have
a direct VB/A equivalent, so you would need to use it as an Excel function
like this

a = Application.WorksheetFunction.Ln(number)

Although the above should work, go with Rick's suggestion and use VBA's Log
function..Just bear it in mind if you need to use other Excel functions in
VBA (most though not all work like that)

Regards,
Peter T


message One of those "differences" between the spreadsheet world and the VBA
world... in the VBA world, the natural log function is Log, not Ln. Just
make that change and your code should work fine.

Rick
 

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