convertir cantidades

23/09/2004 - 23:35 por magav | Informe spam
hola
quiero convetir una cantidad numerica en letra, 12.50= doce pesos cincuenta
centavos, las cantidades varian

Saludos

Preguntas similare

Leer las respuestas

#1 Israel
23/09/2004 - 23:48 | Informe spam
Espero te sirva, copiala y pagala en un modulo


Function NumToLetra(ByVal Valor As Double)
Dim mxLongitud As Integer
Dim mxMoneda As String
Dim mxCantidad As String
Dim mxCents As Double, mxUnids As Double, mxCientos As
Double, mxMiles As Double, mxMillones As Double

ReDim ArrmxU(30)
ReDim ArrmxD(10)
ReDim ArrmxC(10)
ArrmxU(0) = " "
ArrmxU(1) = "UN"
ArrmxU(2) = "DOS"
ArrmxU(3) = "TRES"
ArrmxU(4) = "CUATRO"
ArrmxU(5) = "CINCO"
ArrmxU(6) = "SEIS"
ArrmxU(7) = "SIETE"
ArrmxU(8) = "OCHO"
ArrmxU(9) = "NUEVE"
ArrmxU(10) = "DIEZ"
ArrmxU(11) = "ONCE"
ArrmxU(12) = "DOCE"
ArrmxU(13) = "TRECE"
ArrmxU(14) = "CATORCE"
ArrmxU(15) = "QUINCE"
ArrmxU(16) = "DIECISEIS"
ArrmxU(17) = "DIECISIETE"
ArrmxU(18) = "DIECIOCHO"
ArrmxU(19) = "DIECINUEVE"
ArrmxU(20) = "VEINTE"
ArrmxU(21) = "VEINTIUN"
ArrmxU(22) = "VEINTIDOS"
ArrmxU(23) = "VENTITRES"
ArrmxU(24) = "VEINTICUATRO"
ArrmxU(25) = "VEINTICINCO"
ArrmxU(26) = "VEINTISEIS"
ArrmxU(27) = "VEINTISIETE"
ArrmxU(28) = "VEINTIOCHO"
ArrmxU(29) = "VEINTINUEVE"

ArrmxD(0) = " "
ArrmxD(1) = " "
ArrmxD(2) = " "
ArrmxD(3) = "TREINTA"
ArrmxD(4) = "CUARENTA"
ArrmxD(5) = "CINCUENTA"
ArrmxD(6) = "SESENTA"
ArrmxD(7) = "SETENTA"
ArrmxD(8) = "OCHENTA"
ArrmxD(9) = "NOVENTA"

ArrmxC(0) = " "
ArrmxC(1) = "CIEN"
ArrmxC(2) = "DOSCIENTOS"
ArrmxC(3) = "TRESCIENTOS"
ArrmxC(4) = "CUATROCIENTOS"
ArrmxC(5) = "QUINIENTOS"
ArrmxC(6) = "SEISCIENTOS"
ArrmxC(7) = "SETECIENTOS"
ArrmxC(8) = "OCHOCIENTOS"
ArrmxC(9) = "NOVECIENTOS"

mxLongitud = Len(Trim(Valor))
mxMoneda = "Pesos"
mxCantidad = ""

mxUnids = Int(Valor)
mxCents = Round(Valor - mxUnids, 2) * 100
mxMillones = Int(Valor / 1000000)
mxUnids = Int(Valor - mxMillones * 1000000)
mxMiles = Int(mxUnids / 1000)
mxUnids = Int(mxUnids - mxMiles * 1000)

If Valor > 999999999.99 Then
NumToLetra = "Cantidad demasiado grande"
Exit Function
End If

If mxMillones > 0 Then
Select Case Len(Trim(mxMillones))
Case Is = 1
mxCantidad = ArrmxU(mxMillones)
Case Is = 2
If Mid(Trim(mxMillones), 1, 1) < 3 Then
mxCantidad = ArrmxU(mxMillones)
ElseIf Mid(Trim(mxMillones), 1, 1) >= 3 Then
If Mid(Trim(mxMillones), 2, 1) = 0 Then
mxCantidad = ArrmxD(Mid(Trim
(mxMillones), 1, 1))
ElseIf Mid(Trim(mxMillones), 2, 1) >= 1
Then
mxCantidad = ArrmxD(Mid(Trim
(mxMillones), 1, 1)) & " Y " & ArrmxU(Mid(Trim
(mxMillones), 2, 1))
End If
End If
Case Is = 3
If Mid(Trim(mxMillones), 1, 1) = 1 Then
If Mid(Trim(mxMillones), 1, 1) = 1 And Mid
(Trim(mxMillones), 2, 1) = 0 And Mid(Trim(mxMillones), 3,
1) = 0 Then
mxCantidad = ArrmxC(Mid(Trim
(mxMillones), 1, 1))
ElseIf Mid(Trim(mxMillones), 1, 1) = 1 Or
Mid(Trim(mxMillones), 2, 1) <> 0 Or Mid(Trim(mxMillones),
3, 1) <> 0 Then
If Val(Mid(Trim(mxMillones), 2, 2)) <
30 Then
mxCantidad = ArrmxC(Mid(Trim
(mxMillones), 1, 1)) & "TO " & ArrmxU(Mid(Trim
(mxMillones), 2, 2))
ElseIf Val(Mid(Trim(mxMillones), 2,
2)) > 29 Then
If Mid(Trim(mxMillones), 3, 1) = 0
Then
mxCantidad = ArrmxC(Mid(Trim
(mxMillones), 1, 1)) & "TO " & ArrmxD(Mid(Trim
(mxMillones), 2, 1))
ElseIf Mid(Trim(mxMillones), 3, 1)
= 1 Then


mxCantidad = ArrmxC(Mid(Trim
(mxMillones), 1, 1)) & "TO " & ArrmxD(Mid(Trim
(mxMillones), 2, 1)) & " Y " & ArrmxU(Mid(Trim
(mxMillones), 3, 1))
End If
End If
End If
Else
If Mid(Trim(mxMillones), 2, 1) = 0 And Mid
(Trim(mxMillones), 3, 1) = 0 Then
mxCantidad = ArrmxC(Mid(Trim
(mxMillones), 1, 1))
ElseIf Val(Mid(Trim(mxMillones), 2, 2)) <
30 Then
mxCantidad = ArrmxC(Mid(Trim
(mxMillones), 1, 1)) & " " & ArrmxU(Mid(Trim(mxMillones),
2, 2))
ElseIf Val(Mid(Trim(mxMillones), 2, 2)) >
29 Then
If Mid(Trim(mxMillones), 3, 1) = 0 Then
mxCantidad = ArrmxC(Mid(Trim
(mxMillones), 1, 1)) & " " & ArrmxD(Mid(Trim(mxMillones),
2, 1))
ElseIf Mid(Trim(mxMillones), 3, 1) >= 1
Then
mxCantidad = ArrmxC(Mid(Trim
(mxMillones), 1, 1)) & " " & ArrmxD(Mid(Trim(mxMillones),
2, 1)) & " Y " & ArrmxU(Mid(Trim(mxMillones), 3, 1))
End If
End If
End If
End Select
If mxMillones = 1 Then
NumToLetra = mxCantidad & " MILLON "
ElseIf mxMillones > 1 Then
NumToLetra = mxCantidad & " MILLONES "
End If
End If

If mxMiles > 0 Then
Select Case Len(Trim(mxMiles))
Case Is = 1
mxCantidad = ArrmxU(mxMiles)
Case Is = 2
If Mid(Trim(mxMiles), 1, 1) < 3 Then
mxCantidad = ArrmxU(mxMiles)
ElseIf Mid(Trim(mxMiles), 1, 1) >= 3 Then
If Mid(Trim(mxMiles), 2, 1) = 0 Then
mxCantidad = ArrmxD(Mid(Trim(mxMiles),
1, 1))
ElseIf Mid(Trim(mxMiles), 2, 1) >= 1 Then
mxCantidad = ArrmxD(Mid(Trim(mxMiles),
1, 1)) & " Y " & ArrmxU(Mid(Trim(mxMiles), 2, 1))
End If
End If
Case Is = 3
If Mid(Trim(mxMiles), 1, 1) = 1 Then
If Mid(Trim(mxMiles), 1, 1) = 1 And Mid
(Trim(mxMiles), 2, 1) = 0 And Mid(Trim(mxMiles), 3, 1) = 0
Then
mxCantidad = ArrmxC(Mid(Trim(mxMiles),
1, 1))
ElseIf Mid(Trim(mxMiles), 1, 1) = 1 Or Mid
(Trim(mxMiles), 2, 1) <> 0 Or Mid(Trim(mxMiles), 3, 1) <>
0 Then
If Val(Mid(Trim(mxMiles), 2, 2)) < 30
Then
mxCantidad = ArrmxC(Mid(Trim
(mxMiles), 1, 1)) & "TO " & ArrmxU(Mid(Trim(mxMiles), 2,
2))
ElseIf Val(Mid(Trim(mxMiles), 2, 2)) >
29 Then
If Mid(Trim(mxMiles), 3, 1) = 0 Then
mxCantidad = ArrmxC(Mid(Trim
(mxMiles), 1, 1)) & "TO " & ArrmxD(Mid(Trim(mxMiles), 2,
1))
ElseIf Mid(Trim(mxMiles), 3, 1) >=
1 Then
mxCantidad = ArrmxC(Mid(Trim
(mxMiles), 1, 1)) & "TO " & ArrmxD(Mid(Trim(mxMiles), 2,
1)) & " Y " & ArrmxU(Mid(Trim(mxMiles), 3, 1))
End If
End If
End If
Else
If Mid(Trim(mxMiles), 2, 1) = 0 And Mid
(Trim(mxMiles), 3, 1) = 0 Then
mxCantidad = ArrmxC(Mid(Trim(mxMiles),
1, 1))
ElseIf Val(Mid(Trim(mxMiles), 2, 2)) < 30
Then
mxCantidad = ArrmxC(Mid(Trim(mxMiles),
1, 1)) & " " & ArrmxU(Mid(Trim(mxMiles), 2, 2))
ElseIf Val(Mid(Trim(mxMiles), 2, 2)) > 29
Then
If Mid(Trim(mxMiles), 3, 1) = 0 Then
mxCantidad = ArrmxC(Mid(Trim
(mxMiles), 1, 1)) & " " & ArrmxD(Mid(Trim(mxMiles), 2, 1))
ElseIf Mid(Trim(mxMiles), 3, 1) >= 1
Then
mxCantidad = ArrmxC(Mid(Trim
(mxMiles), 1, 1)) & " " & ArrmxD(Mid(Trim(mxMiles), 2, 1))
& " Y " & ArrmxU(Mid(Trim(mxMiles), 3, 1))
End If
End If
End If
End Select
If mxMiles = 1 Then
NumToLetra = NumToLetra & mxCantidad & " MIL "
ElseIf mxMiles > 1 Then
NumToLetra = NumToLetra & mxCantidad & " MIL "
End If
End If

If mxUnids > 0 Then
Select Case Len(Trim(mxUnids))
Case Is = 1
mxCantidad = ArrmxU(mxUnids)
If mxUnids = 1 Then
mxMoneda = "Peso"
End If
Case Is = 2
If Mid(Trim(mxUnids), 1, 1) < 3 Then
mxCantidad = ArrmxU(mxUnids)
ElseIf Mid(Trim(mxUnids), 1, 1) >= 3 Then
If Mid(Trim(mxUnids), 2, 1) = 0 Then
mxCantidad = ArrmxD(Mid(Trim(mxUnids),
1, 1))
ElseIf Mid(Trim(mxUnids), 2, 1) >= 1 Then
mxCantidad = ArrmxD(Mid(Trim(mxUnids),
1, 1)) & " Y " & ArrmxU(Mid(Trim(mxUnids), 2, 1))
End If
End If
Case Is = 3
If Mid(Trim(mxUnids), 1, 1) = 1 Then
If Mid(Trim(mxUnids), 1, 1) = 1 And Mid
(Trim(mxUnids), 2, 1) = 0 And Mid(Trim(mxUnids), 3, 1) = 0
Then
mxCantidad = ArrmxC(Mid(Trim(mxUnids),
1, 1))
ElseIf Mid(Trim(mxUnids), 1, 1) = 1 Or Mid
(Trim(mxUnids), 2, 1) <> 0 Or Mid(Trim(mxUnids), 3, 1) <>
0 Then
If Val(Mid(Trim(mxUnids), 2, 2)) < 30
Then
mxCantidad = ArrmxC(Mid(Trim
(mxUnids), 1, 1)) & "TO " & ArrmxU(Mid(Trim(mxUnids), 2,
2))
ElseIf Val(Mid(Trim(mxUnids), 2, 2)) >
29 Then
If Mid(Trim(mxUnids), 3, 1) = 0 Then
mxCantidad = ArrmxC(Mid(Trim
(mxUnids), 1, 1)) & "TO " & ArrmxD(Mid(Trim(mxUnids), 2,
1))
ElseIf Mid(Trim(mxUnids), 3, 1) >=
1 Then
mxCantidad = ArrmxC(Mid(Trim
(mxUnids), 1, 1)) & "TO " & ArrmxD(Mid(Trim(mxUnids), 2,
1)) & " Y " & ArrmxU(Mid(Trim(mxUnids), 3, 1))
End If
End If
End If
Else
If Mid(Trim(mxUnids), 2, 1) = 0 And Mid
(Trim(mxUnids), 3, 1) = 0 Then
mxCantidad = ArrmxC(Mid(Trim(mxUnids),
1, 1))
ElseIf Val(Mid(Trim(mxUnids), 2, 2)) < 30
Then
mxCantidad = ArrmxC(Mid(Trim(mxUnids),
1, 1)) & " " & ArrmxU(Mid(Trim(mxUnids), 2, 2))
ElseIf Val(Mid(Trim(mxUnids), 2, 2)) > 29
Then
If Mid(Trim(mxUnids), 3, 1) = 0 Then
mxCantidad = ArrmxC(Mid(Trim
(mxUnids), 1, 1)) & " " & ArrmxD(Mid(Trim(mxUnids), 2, 1))
ElseIf Mid(Trim(mxUnids), 3, 1) >= 1
Then
mxCantidad = ArrmxC(Mid(Trim
(mxUnids), 1, 1)) & " " & ArrmxD(Mid(Trim(mxUnids), 2, 1))
& " Y " & ArrmxU(Mid(Trim(mxUnids), 3, 1))
End If
End If
End If
End Select
If mxUnids = 1 Then
NumToLetra = NumToLetra & mxCantidad ' & " MIL "
ElseIf mxUnids > 1 Then
NumToLetra = NumToLetra & mxCantidad ' & " MIL "
End If
End If

If mxCents > 0 Then
NumToLetra = UCase(NumToLetra & " " & mxMoneda
& " " & mxCents & "/100 M.N.")
ElseIf mxCents <= 0 Then
NumToLetra = UCase(NumToLetra & " " & mxMoneda
& " " & "00/100 M.N.")
End If
End Function










hola
quiero convetir una cantidad numerica en letra, 12.50=


doce pesos cincuenta
centavos, las cantidades varian

Saludos
.

Respuesta Responder a este mensaje
#2 fredy rojas
24/09/2004 - 00:02 | Informe spam
este otro codigo me parece bueno mas corto y facil de
entender por si quiere probarlo, se ejecuta asi
=enletras(CELDA)
'COPIAR DESDE AQUI
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
PESOS"
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
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
funcion '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
'HASTA AQUI
hola
quiero convetir una cantidad numerica en letra, 12.50=


doce pesos cincuenta
centavos, las cantidades varian

Saludos
.

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