implementando un módulo numeros a letras

19/09/2003 - 16:48 por Javier Avila | Informe spam
He estado probando un modulo para la implementacion de la funcion de
numeros a letras, será que alguien me puede dar una explicacion de como
hacerla funcionar?.
Tengo una hoja de mi libro con sus ejemplo que basado en numeros
generados aleatoriamente el modulo me genera los nombres dandome a
escoger el tipo de moneda el nombre de los centimos, el tipo o formato
de escritura.
Existe un campo en el libro donde se puede escribir un numero y otro por
donde sale el "resultado" literal, he tratado de copiar y pegar los
formatos en otra hoja de de mi libro pero me da un campo "#numero",
alguna ayuda oo quizá alguna sugerencia con respecto a este tema?, gracias

saludos.
Javier Avila
System Adminsitrator

LEY DE MINTON SOBRE LA PINTURA. Todas las pinturas, sea cual sea su
composición, se adhieren permanentemente a cualquier superficie
(preparada o no) si caen sobre ella accidentalmente.

Preguntas similare

Leer las respuestas

#6 Héctor Miguel
24/09/2003 - 05:22 | Informe spam
Hola, Javier !

... nuevo problema: el formato de salida ... cambiar el "orden" de las palabras?
... algo asi digamos: 325 (trecientos veinticinco 00/100 bolivianos)
... tratando de incursionar en el codigo ... infructuosamente ... creo que al principio ... el formato de salida o no?:
... cambiar el orden de los outputs pero me da errores variados [...]
... ya tengo internet y voy a estar mas seguido molestando jeje [...]



==> si vas a usar 'el mismo' estilo, formato y moneda =>SIEMPRE<= [te sugiero]...
'cambia' a una funcion [mas 'sencilla'] de tipo 'permanente' =>sin argumentos 'opcionales'< a) siempre en minusculas
b) las fracciones en el formato de ??/100
c) la moneda sera [siempre] boliviano(s)
d) 'todo' el texto entre parentesis

[p.e.] [A1] => 325
[B1] => =EnLetras(A1)
<< 'el resultado' => (trecientos veinticinco 00/100 bolivianos) >>

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 = "(uno" & Cents & " boliviano)"
Exit Function
End If
EnLetras = "(" & Letras(Int(Valor)) & Cents & " bolivianos)"
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.
MS-MVP

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']... :))
Respuesta Responder a este mensaje
#7 Javier Avila
24/09/2003 - 16:00 | Informe spam
Funcionó perfecto...
Quisiera saber como hacerlas MAYUSCULAS COMPLETAMENTE y manejarlas sin
parentesis, se puede? gracias.

Héctor Miguel wrote:
Hola, Javier !


... nuevo problema: el formato de salida ... cambiar el "orden" de las palabras?
... algo asi digamos: 325 (trecientos veinticinco 00/100 bolivianos)
... tratando de incursionar en el codigo ... infructuosamente ... creo que al principio ... el formato de salida o no?:
... cambiar el orden de los outputs pero me da errores variados [...]
... ya tengo internet y voy a estar mas seguido molestando jeje [...]




==> si vas a usar 'el mismo' estilo, formato y moneda =>SIEMPRE<= [te sugiero]...
'cambia' a una funcion [mas 'sencilla'] de tipo 'permanente' =>sin argumentos 'opcionales'<> a) siempre en minusculas
b) las fracciones en el formato de ??/100
c) la moneda sera [siempre] boliviano(s)
d) 'todo' el texto entre parentesis

[p.e.] [A1] => 325
[B1] => =EnLetras(A1)
<< 'el resultado' => (trecientos veinticinco 00/100 bolivianos) >>

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 = "(uno" & Cents & " boliviano)"
Exit Function
End If
EnLetras = "(" & Letras(Int(Valor)) & Cents & " bolivianos)"
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.
MS-MVP

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']... :))





Javier Avila
System Adminsitrator

Missing dog and wife. Reward for dog.
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una pregunta AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida