cantidades en letras en excel

31/10/2006 - 19:14 por gavylant | Informe spam
al redactar informes en excel es necesario que las cantidades en una celda me
las escriba tambien con letras, como cuando se redacta un recibo

Preguntas similare

Leer las respuestas

#1 ElAlumno
31/10/2006 - 19:28 | Informe spam
Hola "gavylant:

Por allá en el 2005 "KL" me sugirio esta respuesta de "Héctor Miguel"
http://tinyurl.com/ymuggb
Saludos
Respuesta Responder a este mensaje
#2 vm_tapia
01/11/2006 - 20:00 | Informe spam
"gavylant" wrote:

al redactar informes en excel es necesario que las cantidades en una celda me
las escriba tambien con letras, como cuando se redacta un recibo



Utiliza el siguiente codigo en un modulo de VB, para traducir una cantidad
MONETARIA a letras:
-
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 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

y el siguiente, si quieres que solo "traduzca" los numeros:

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


Atentamente

Victor Manuel
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida