Here is what I had come up with...It still only works up to 999 trillion, but it works. I got an array reference our of bounds on line 27 of your code jooel.

 Code:
? Num2Text("999999999999999")

if @Error ? @Error endif

get $

Function Num2Text($n)
   Dim $ones,$tens,$magnitudes
   $ones="","One","Two","Three","Four","Five","Six","Seven","Eight","Nine","Ten",
      "Eleven","Twelve","Thirteen","Fourteen","Fifteen","Sixteen","Seventeen","Eighteen","Nineteen"
   $tens="","Ten","Twenty","Thirty","Forty","Fifty","Sixty","Seventy","Eighty","Ninety"
   $magnitudes="Hundred","Thousand","Million","Billion","Trillion"
   if $n<>CDbl($n) exit 87 endif
   $n = CDbl($n)
   if $n<1 exit 87 endif
   Select
      Case Len($n)=1
         $Num2Text=$ones[$n]
      Case Len($n)=2
         if left($n,1)=1
            $Num2Text=$ones[$n]
         else
            $Num2Text=Trim($tens[val($n/10)]+" "+Num2Text(right($n,1)))
         endif
      Case Len($n)=3
         $Num2Text=Trim($ones[left($n,1)]+" Hundred "+Num2Text(right($n,2)))
      Case Len($n)>3
         $Num2Text=Trim(Num2Text(left($n,len($n)-((len($n)-1)/3)*3))+" "+
                   $magnitudes[(len($n)-1)/3]+" "+Num2Text(right($n,((len($n)-1)/3)*3)))
   EndSelect
EndFunction