Numeros a Letras

21/08/2006 - 19:16 por vm_tapia | Informe spam
Para todo el que lo necesite

en celda A1 = 1234.56
En celda B1 = EnLetras(A1)
Resultado = (UN MIL DOSCIENTOS TREINTA Y CUATRO PESOS 56/100 M.N.)

En celda A2 = 1234
En celda B2 = SoloLetra(A2)
Resultado = un mil doscientos treinta y cuatro

NOTA: en la funcion SoloLetra no se consideran los decimales. pero pueden
adaptarlo
de acuerdo a sus necesidades.


=Function EnLetras(Valor) As String ' Función Principal '
If Not IsNumeric(Valor) Then
EnLetras = " ¡ La referencia no es un numero ! ":
Exit Function
End If: Dim Moneda As String, Fracs As String, Cents As Integer
If Int(Abs(Valor)) = 1 Then Moneda = " PESO " Else Moneda = " PESOS "
If Right(Letras(Abs(Valor)), 6) = "ILLON " Or Right(Letras(Abs(Valor)), 8)
= "ILLONES " Then Moneda = "DE" & Moneda
Cents = Application.Round(Abs(Valor) - Int(Abs(Valor)), 2) * 100
If Cents = 0 Then EnLetras = "(" & Letras(Int(Abs(Valor))) & Moneda &
Fracs & "00/100 M.N.)" Else
If Cents >= 1 & Cents < 10 Then EnLetras = "(" & Letras(Int(Abs(Valor)))
& Moneda & Fracs & "0" & Cents & "/100 M.N.)" Else
If Cents >= 10 Then EnLetras = "(" & Letras(Int(Abs(Valor))) & Moneda &
Fracs & Cents & "/100 M.N.)"
End Function
Private Function Letras(Valor) As String
' Función Auxiliar [uso 'exclusivo'de la función 'principal'] '
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 = "UN MIL"
Case Is < 2000: Letras = "UN 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 MILLON "
Case Is < 2000000: Letras = "UN MILLON " & 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 BILLON "
Case Is < 2000000000000#
Letras = "UN BILLON " & 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

Function SoloLetra(Valor) As String ' Función Principal '
If Not IsNumeric(Valor) Then
sololetra = " ¡ La referencia no es un numero ! ":
Exit Function
End If
Dim Moneda As String, Fracs As String, Cents As Integer
Cents = Application.Round(Abs(Valor) - Int(Abs(Valor)), 2) * 100
If Cents = 0 Then sololetra = Letrassinmoneda(Int(Abs(Valor)))
End Function
Private Function Letrassinmoneda(Valor) As String
' Función Auxiliar [uso 'exclusivo'de la función 'principal'] '
Select Case Int(Valor)
Case 0: Letrassinmoneda = "cero"
Case 1: Letrassinmoneda = "un"
Case 2: Letrassinmoneda = "dos"
Case 3: Letrassinmoneda = "tres"
Case 4: Letrassinmoneda = "cuatro"
Case 5: Letrassinmoneda = "cinco"
Case 6: Letrassinmoneda = "seis"
Case 7: Letrassinmoneda = "siete"
Case 8: Letrassinmoneda = "ocho"
Case 9: Letrassinmoneda = "nueve"
Case 10: Letrassinmoneda = "diez"
Case 11: Letrassinmoneda = "once"
Case 12: Letrassinmoneda = "doce"
Case 13: Letrassinmoneda = "trece"
Case 14: Letrassinmoneda = "catorce"
Case 15: Letrassinmoneda = "quince"
Case Is < 20: Letrassinmoneda = "dieci" & Letrassinmoneda(Valor - 10)
Case 20: Letrassinmoneda = "veinte"
Case Is < 30: Letrassinmoneda = "veinti" & Letrassinmoneda(Valor - 20)
Case 30: Letrassinmoneda = "treinta"
Case 40: Letrassinmoneda = "cuarenta"
Case 50: Letrassinmoneda = "cincuenta"
Case 60: Letrassinmoneda = "sesenta"
Case 70: Letrassinmoneda = "setenta"
Case 80: Letrassinmoneda = "ochenta"
Case 90: Letrassinmoneda = "noventa"
Case Is < 100: Letrassinmoneda = Letrassinmoneda(Int(Valor \ 10) * 10) &
" Y " & Letrassinmoneda(Valor Mod 10)
Case 100: Letrassinmoneda = "cien"
Case Is < 200: Letrassinmoneda = "ciento " & Letrassinmoneda(Valor - 100)
Case 200, 300, 400, 600, 800: Letrassinmoneda =
Letrassinmoneda(Int(Valor \ 100)) & "cientos"
Case 500: Letrassinmoneda = "quinientos"
Case 700: Letrassinmoneda = "setecientos"
Case 900: Letrassinmoneda = "novecientos"
Case Is < 1000: Letrassinmoneda = Letrassinmoneda(Int(Valor \ 100) *
100) & " " & Letrassinmoneda(Valor Mod 100)
Case 1000: Letrassinmoneda = "un mil"
Case Is < 2000: Letrassinmoneda = "un mil " & Letrassinmoneda(Valor Mod
1000)
Case Is < 1000000: Letrassinmoneda = Letrassinmoneda(Int(Valor \ 1000))
& " mil"
If Valor Mod 1000 Then Letrassinmoneda = Letrassinmoneda & " " &
Letrassinmoneda(Valor Mod 1000)
Case 1000000: Letrassinmoneda = "un millon "
Case Is < 2000000: Letrassinmoneda = "un millon " &
Letrassinmoneda(Valor Mod 1000000)
Case Is < 1000000000000#: Letrassinmoneda = Letrassinmoneda(Int(Valor /
1000000)) & " millones "
If (Valor - Int(Valor / 1000000) * 1000000) _
Then Letrassinmoneda = Letrassinmoneda & Letrassinmoneda(Valor -
Int(Valor / 1000000) * 1000000)
Case 1000000000000#: Letrassinmoneda = "un billon "
Case Is < 2000000000000#
Letrassinmoneda = "un billon " & Letrassinmoneda(Valor - Int(Valor /
1000000000000#) * 1000000000000#)
Case Else: Letrassinmoneda = Letrassinmoneda(Int(Valor /
1000000000000#)) & " billones "
If (Valor - Int(Valor / 1000000000000#) * 1000000000000#) Then
Letrassinmoneda = Letrassinmoneda & " " & Letrassinmoneda(Valor - Int(Valor /
1000000000000#) * 1000000000000#)
End Select
End Function
==
 

Leer las respuestas

#1 Danny A. Villar F. \(VE\)
21/08/2006 - 21:24 | Informe spam
Hola ...

y.. como ejecuto esta funcion, en parabras basicas

Saludos
Danny A. Villar F.
Caracas - Venezuela


"vm_tapia" escribió en el mensaje
news:
Para todo el que lo necesite

en celda A1 = 1234.56
En celda B1 = EnLetras(A1)
Resultado = (UN MIL DOSCIENTOS TREINTA Y CUATRO PESOS 56/100 M.N.)

En celda A2 = 1234
En celda B2 = SoloLetra(A2)
Resultado = un mil doscientos treinta y cuatro

NOTA: en la funcion SoloLetra no se consideran los decimales. pero pueden
adaptarlo
de acuerdo a sus necesidades.


=> Function EnLetras(Valor) As String ' Función Principal '
If Not IsNumeric(Valor) Then
EnLetras = " ¡ La referencia no es un numero ! ":
Exit Function
End If: Dim Moneda As String, Fracs As String, Cents As Integer
If Int(Abs(Valor)) = 1 Then Moneda = " PESO " Else Moneda = " PESOS "
If Right(Letras(Abs(Valor)), 6) = "ILLON " Or Right(Letras(Abs(Valor)),
8)
= "ILLONES " Then Moneda = "DE" & Moneda
Cents = Application.Round(Abs(Valor) - Int(Abs(Valor)), 2) * 100
If Cents = 0 Then EnLetras = "(" & Letras(Int(Abs(Valor))) & Moneda &
Fracs & "00/100 M.N.)" Else
If Cents >= 1 & Cents < 10 Then EnLetras = "(" &
Letras(Int(Abs(Valor)))
& Moneda & Fracs & "0" & Cents & "/100 M.N.)" Else
If Cents >= 10 Then EnLetras = "(" & Letras(Int(Abs(Valor))) & Moneda &
Fracs & Cents & "/100 M.N.)"
End Function
Private Function Letras(Valor) As String
' Función Auxiliar [uso 'exclusivo'de la función 'principal'] '
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 = "UN MIL"
Case Is < 2000: Letras = "UN 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 MILLON "
Case Is < 2000000: Letras = "UN MILLON " & 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 BILLON "
Case Is < 2000000000000#
Letras = "UN BILLON " & 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

Function SoloLetra(Valor) As String ' Función Principal '
If Not IsNumeric(Valor) Then
sololetra = " ¡ La referencia no es un numero ! ":
Exit Function
End If
Dim Moneda As String, Fracs As String, Cents As Integer
Cents = Application.Round(Abs(Valor) - Int(Abs(Valor)), 2) * 100
If Cents = 0 Then sololetra = Letrassinmoneda(Int(Abs(Valor)))
End Function
Private Function Letrassinmoneda(Valor) As String
' Función Auxiliar [uso 'exclusivo'de la función 'principal'] '
Select Case Int(Valor)
Case 0: Letrassinmoneda = "cero"
Case 1: Letrassinmoneda = "un"
Case 2: Letrassinmoneda = "dos"
Case 3: Letrassinmoneda = "tres"
Case 4: Letrassinmoneda = "cuatro"
Case 5: Letrassinmoneda = "cinco"
Case 6: Letrassinmoneda = "seis"
Case 7: Letrassinmoneda = "siete"
Case 8: Letrassinmoneda = "ocho"
Case 9: Letrassinmoneda = "nueve"
Case 10: Letrassinmoneda = "diez"
Case 11: Letrassinmoneda = "once"
Case 12: Letrassinmoneda = "doce"
Case 13: Letrassinmoneda = "trece"
Case 14: Letrassinmoneda = "catorce"
Case 15: Letrassinmoneda = "quince"
Case Is < 20: Letrassinmoneda = "dieci" & Letrassinmoneda(Valor - 10)
Case 20: Letrassinmoneda = "veinte"
Case Is < 30: Letrassinmoneda = "veinti" & Letrassinmoneda(Valor - 20)
Case 30: Letrassinmoneda = "treinta"
Case 40: Letrassinmoneda = "cuarenta"
Case 50: Letrassinmoneda = "cincuenta"
Case 60: Letrassinmoneda = "sesenta"
Case 70: Letrassinmoneda = "setenta"
Case 80: Letrassinmoneda = "ochenta"
Case 90: Letrassinmoneda = "noventa"
Case Is < 100: Letrassinmoneda = Letrassinmoneda(Int(Valor \ 10) * 10)
&
" Y " & Letrassinmoneda(Valor Mod 10)
Case 100: Letrassinmoneda = "cien"
Case Is < 200: Letrassinmoneda = "ciento " & Letrassinmoneda(Valor -
100)
Case 200, 300, 400, 600, 800: Letrassinmoneda > Letrassinmoneda(Int(Valor \ 100)) & "cientos"
Case 500: Letrassinmoneda = "quinientos"
Case 700: Letrassinmoneda = "setecientos"
Case 900: Letrassinmoneda = "novecientos"
Case Is < 1000: Letrassinmoneda = Letrassinmoneda(Int(Valor \ 100) *
100) & " " & Letrassinmoneda(Valor Mod 100)
Case 1000: Letrassinmoneda = "un mil"
Case Is < 2000: Letrassinmoneda = "un mil " & Letrassinmoneda(Valor Mod
1000)
Case Is < 1000000: Letrassinmoneda = Letrassinmoneda(Int(Valor \ 1000))
& " mil"
If Valor Mod 1000 Then Letrassinmoneda = Letrassinmoneda & " " &
Letrassinmoneda(Valor Mod 1000)
Case 1000000: Letrassinmoneda = "un millon "
Case Is < 2000000: Letrassinmoneda = "un millon " &
Letrassinmoneda(Valor Mod 1000000)
Case Is < 1000000000000#: Letrassinmoneda = Letrassinmoneda(Int(Valor /
1000000)) & " millones "
If (Valor - Int(Valor / 1000000) * 1000000) _
Then Letrassinmoneda = Letrassinmoneda & Letrassinmoneda(Valor -
Int(Valor / 1000000) * 1000000)
Case 1000000000000#: Letrassinmoneda = "un billon "
Case Is < 2000000000000#
Letrassinmoneda = "un billon " & Letrassinmoneda(Valor - Int(Valor /
1000000000000#) * 1000000000000#)
Case Else: Letrassinmoneda = Letrassinmoneda(Int(Valor /
1000000000000#)) & " billones "
If (Valor - Int(Valor / 1000000000000#) * 1000000000000#) Then
Letrassinmoneda = Letrassinmoneda & " " & Letrassinmoneda(Valor -
Int(Valor /
1000000000000#) * 1000000000000#)
End Select
End Function
==

Preguntas similares