Preformatted array returned by custom function

  • Thread starter Thread starter Asif
  • Start date Start date
A

Asif

I've created a function that returns an array of numbers which I'd like to
be shown in "##,##0" format when the array is printed to the worksheet.
Looks like I can't do this. Can I?

Thanks
~Asif
 
I think you would need to format the range in the correct format. A
worksheet function cannot make any formatting changes.
 
Well Vasant-ji, thanks for your reply. But I think a function can directly
return numbers in "##,##0" format when it returns a single value.

Function NumberFormatting(theNumber)
theNumber=10000.01
NumberFormatting=Format(theNumber,"##,##0")
End Function

I'd like to do something similar with my function that returns an array.

Thanks
~Asif



Vasant Nanavati > wrote in message ...
 
A simple sample:

Function testIt()
Dim arr, i As Long, Elem as variant
arr = Array(1000.01, 10000.01, 100000.01)
i = 1
For Each Elem In arr
arr(i) = Format(Elem, "##,##0")
i = i + 1
Next
testIt = arr
End Function

Array enter =testIt() into a range of cells of the appropriate size and
shape to accommodate the output.

Alan Beban
 
Sorry, I misunderstood your question. Of course you can use the format
function to format the number, but what will be returned is a string, not a
number. If that is acceptable, Alan's solution will do what you need.
 
Vasant said:
Sorry, I misunderstood your question. Of course you can use the format
function to format the number, but what will be returned is a string, not a
number. If that is acceptable, Alan's solution will do what you need.

And if it's not, then I believe calling it with =--testIt() will.

Alan Beban
 
Unless you have option Base 1,
arr is zero based.

Function testIt()
Dim arr, i As Long, Elem as variant
arr = Array(1000.01, 10000.01, 100000.01)
i = lbound(arr)
For Each Elem In arr
arr(i) = Format(Elem, "##,##0")
i = i + 1
Next
testIt = arr
End Function

Might be a little more robust.
 
Indeed it does. The cells I used in testing it happened to be formatted
to produce the right result. Sloppy.

Thanks,
Alan Beban
 
Tom said:
Unless you have option Base 1,
arr is zero based.

I did, and the loop assumes a 1-based array. To avoid the assumption,
the array needs to be loaded more rigorously.

Alan Beban
 
Back
Top