That's right, actually, its in any school exercise make suc
functions...
BUT!
I did it first for spanish numbers.
so, if anyone need it IN SPANISH (it has more special cases tha
english)
Function NumeroALetra(Numero)
aUnidad = Array("UN", "DOS", "TRES", "CUATRO", "CINCO", "SEIS"
"SIETE", "OCHO", "NUEVE")
aDecena = Array("DIEZ", "VEINTE", "TREINTA", "CUARENTA", "CINCUENTA"
"SESENTA", "SETENTA", "OCHENTA", "NOVENTA")
aCentena = Array("UN CIENTO", "DOSCIENTOS", "TRESCIENTOS", "CUATR
CIENTOS", "QUINIENTOS", "SEISCIENTOS", "SETECIENTOS", "OCHOCIENTOS"
"NOVECIENTOS")
aResto = Array("ONCE", "DOCE", "TRECE", "CATORCE", "QUINCE")
Numero = Str(Numero)
Pos = InStr(Numero, ".")
If (Pos 0) Then Numero = Left(Numero, Pos - 1)
Letra = ""
If (Val(Numero) = 0) Then
Letra = "CERO "
Else
millon = 0
Do
mil = False
Do
If (mil And (Right(Numero, 3) 0)) Then Letra = "MIL "
Letra
' AJUSTE DE LA CLONACION DE NUMEROS INDESEABLES.
' If (Val(Right(Numero, 3)) 0) Then
Numero = "000" + LTrim(Numero)
resto = Val(Right(Numero, 2))
If ((resto 10) And (resto < 16)) Then
Letra = aResto(resto - 11) + " " + Letra
Else
unidad = Val(Right(Numero, 1))
If (unidad 0) Then Letra = aUnidad(unidad - 1) + " "
Letra
decena = Val(Left(Right(Numero, 2), 1))
If (decena 0) Then
If ((decena = 1) And (unidad 5)) Then
Letra = "DIECI" + Letra
ElseIf ((decena = 2) And (unidad < 0)) Then
Letra = "VEINTI" + Letra
Else
If (unidad 0) Then Letra = "Y " + Letra
Letra = aDecena(decena - 1) + " " + Letra
End If
End If
End If
centena = Val(Left(Right(Numero, 3), 1))
If (centena 0) Then
If (Val(Right(Numero, 3)) = 100) Then
Letra = "CIEN " + Letra
Else
Letra = aCentena(centena - 1) + " " + Letra
End If
End If
Numero = Left(Numero, Len(Numero) - 3)
If (Val(Numero) 0) Then
mil = Not mil
Else
mil = False
End If
Loop While (mil)
If (Val(Numero) 0) Then
millon = millon + 1
If (Val(Right(Numero, 6)) 0) Then
Letra = " " + Letra
If (Val(Right(Numero, 1)) < 1) Then Letra = "ES" + Letra
Select Case millon
Case 1
Letra = "MILLON" + Letra
Case 2
Letra = "BILLON" + Letra
Case 3
Letra = "TRILLON" + Letra
End Select
End If
End If
Loop While ((Numero 0) And (millon <= 3))
End If
NumeroALetra = Letra
End Function
Function NumeroAMoneda(Numero, Formato)
Fraccion = Right(Format(Numero, "#.00"), 2)
Moneda = NumeroALetra(Numero)
If Formato < "" Then
Formato = Replace(Formato, "%", Fraccion)
End If
NumeroAMoneda = "(" + Moneda + Formato + ")"
End Function
Function NumeroAPesos(Numero)
NumeroAPesos = NumeroAMoneda(Numero, "PESOS %/100 M.N.")
End Function
I hope this one would be useful to someone =)
Greetings
Robert
--
Message posted from
http://www.ExcelForum.com