Habrá alguna formula????

20/10/2003 - 21:38 por Jack-11 | Informe spam
Hola a todos,

Alguien podría ayudarme a encontrar la forma de convertir
una cantidad númerica a texto?

Ejemplo:
Este es el formato convencional:
$1,000.00
Quiero este:
Mil (lo que sea) pesos, dólares, pesetas, etc.


Ojalá alguien pueda ayudarme

hiroldan@hotmail.com
 

Leer las respuestas

#1 Héctor Miguel
20/10/2003 - 23:48 | Informe spam
Hola, Jack !

... convertir una cantidad numerica a texto?
Ejemplo: $1,000.00 ... Mil (lo que sea) pesos, dólares, pesetas, etc.



==> si vas a usar 'el mismo' estilo, formato y moneda =>SIEMPRE<= [te sugiero]...
una funcion ['sencilla'] de tipo 'permanente' =>sin argumentos 'opcionales'< a) siempre en minusculas
b) las fracciones en el formato de ??/100
c) la moneda sera [siempre] peso(s)
d) todo el texto entre parentesis
e) ¿y si mejor 'personalizas' a tu conveniencia lo que sea necesario??? ;)

[p.e.] [A1] => 1000
[B1] => =EnLetras(A1)
<< 'el resultado' => (mil pesos con 00/100) >>

en un modulo de codigo 'normal' ==' Función Principal '
Function EnLetras(Valor) As String
Dim Cents As String
If Not IsNumeric(Valor) Then
EnLetras = "¡ La referencia no es valor o... 'excede' la precisión !!!"
Exit Function
ElseIf Valor = 0 Then
EnLetras = "¡ No hay valor a convertir o... está en cero !!!"
Exit Function
End If
If Valor < 0 Then Valor = Abs(Valor)
Cents = Format((Valor - Int(Valor)) * 100, " 00") & "/100"
If Int(Valor) = 1 Then
EnLetras = "(un peso con" & Cents & ")"
Exit Function
End If
EnLetras = "(" & Letras(Int(Valor)) & " pesos con" & Cents & ")"
End Function

' Función Auxiliar [de uso privado] '
Private Function Letras(Valor) As String
Select Case Int(Valor)
Case 0: Letras = "cero"
Case 1: Letras = "un"
Case 2: Letras = "dos"
Case 3: Letras = "tres"
Case 4: Letras = "cuatro"
Case 5: Letras = "cinco"
Case 6: Letras = "seis"
Case 7: Letras = "siete"
Case 8: Letras = "ocho"
Case 9: Letras = "nueve"
Case 10: Letras = "diez"
Case 11: Letras = "once"
Case 12: Letras = "doce"
Case 13: Letras = "trece"
Case 14: Letras = "catorce"
Case 15: Letras = "quince"
Case Is < 20: Letras = "dieci" & Letras(Valor - 10)
Case 20: Letras = "veinte"
Case Is < 30: Letras = "veinti" & Letras(Valor - 20)
Case 30: Letras = "treinta"
Case 40: Letras = "cuarenta"
Case 50: Letras = "cincuenta"
Case 60: Letras = "sesenta"
Case 70: Letras = "setenta"
Case 80: Letras = "ochenta"
Case 90: Letras = "noventa"
Case Is < 100: Letras = Letras(Int(Valor \ 10) * 10) & " y " & Letras(Valor Mod 10)
Case 100: Letras = "cien"
Case Is < 200: Letras = "ciento " & Letras(Valor - 100)
Case 200, 300, 400, 600, 800: Letras = Letras(Int(Valor \ 100)) & "cientos"
Case 500: Letras = "quinientos"
Case 700: Letras = "setecientos"
Case 900: Letras = "novecientos"
Case Is < 1000: Letras = Letras(Int(Valor \ 100) * 100) & " " & Letras(Valor Mod 100)
Case 1000: Letras = "mil"
Case Is < 2000: Letras = "mil " & Letras(Valor Mod 1000)
Case Is < 1000000: Letras = Letras(Int(Valor \ 1000)) & " mil"
If Valor Mod 1000 Then Letras = Letras & " " & Letras(Valor Mod 1000)
Case 1000000: Letras = "un millón "
Case Is < 2000000: Letras = "un millón " & Letras(Valor Mod 1000000)
Case Is < 1000000000000#: Letras = Letras(Int(Valor / 1000000)) & " millones "
If (Valor - Int(Valor / 1000000) * 1000000) _
Then Letras = Letras & Letras(Valor - Int(Valor / 1000000) * 1000000)
Case 1000000000000#: Letras = "un billón "
Case Is < 2000000000000#: Letras = "un billón " & _
Letras(Valor - Int(Valor / 1000000000000#) * 1000000000000#)
Case Else:
Letras = Letras(Int(Valor / 1000000000000#)) & " billones"
If (Valor - Int(Valor / 1000000000000#) * 1000000000000#) _
Then Letras = Letras & " " & Letras(Valor - Int(Valor / 1000000000000#) * 1000000000000#)
End Select
End Function

Saludos,
Héctor.

P.D. [la 'auxiliar'] es una funcion que publico en este foro Claudio Sepulveda hace [algun] tiempo
no estoy seguro si es de su 'autoria' ...['por si las dudas']... :))

Preguntas similares