Pasar de números a letras en excel
buen día...
necesito pasar valores a letras... El código que tengo me funciona bien pero no me puesta al final pesos...
ej:
20.000 a veintemil pesos
solo me pasa veintemil...
el código es:
Function Numeros_A_Letras(Numero As Double, Optional TipoMoneda = 0) As String
Dim LETRAS As String
Dim Decimales As Double
If TipoMoneda <> 0 And TipoMoneda <> 1 Then
Numeros_A_Letras = "Falta Especificar, TipoMoneda 0=Pesos 1=Dolares"
Exit Function
End If
If Numero < 1 Then
LETRAS = ""
Numeros_A_Letras = UCase(LETRAS)
Exit Function
ElseIf Numero > 999999999.99 Then
LETRAS = "Numero No Valido"
Numeros_A_Letras = UCase(LETRAS)
Exit Function
End If
Decimales = Format((Numero - Int(Numero)) * 100, "00")
Numero = Int(Numero)
Dim Números(90) As String
Números(0) = "cero"
Números(1) = "un"
Números(2) = "dos"
Números(3) = "tres"
Números(4) = "cuatro"
Números(5) = "cinco"
Números(6) = "seis"
Números(7) = "siete"
Números(8) = "ocho"
Números(9) = "nueve"
Números(10) = "diez"
Números(11) = "once"
Números(12) = "doce"
Números(13) = "trece"
Números(14) = "catorce"
Números(15) = "quince"
Números(16) = "dieciséis"
Números(17) = "diecisiete"
Números(18) = "dieciocho"
Números(19) = "diecinueve"
Números(20) = "veinte"
Números(21) = "veintiún"
Números(22) = "veintidós"
Números(23) = "veintitrés"
Números(24) = "veinticuatro"
Números(25) = "veinticinco"
Números(26) = "veintiséis"
Números(27) = "veintisiete"
Números(28) = "veintiocho"
Números(29) = "veintinueve"
Números(30) = "treinta"
Números(20) = "veinte"
Números(40) = "cuarenta"
Números(50) = "cincuenta"
Números(60) = "sesenta"
Números(70) = "setenta"
Números(80) = "ochenta"
Números(90) = "noventa"
Millones = Int(Numero / 1000000)
Millones2 = Int(Numero) - (Millones * 1000000)
Do
'*---> Centenas de Millón
If (Numero < 1000000000) And (Numero >= 100000000) Then
If (Int(Numero / 100000000) = 1) And ((Numero - (Int(Numero / 100000000) * 100000000)) < 1000000) Then
LETRAS = LETRAS & "cien millones "
Else
Select Case Int(Numero / 100000000)
Case 1
LETRAS = LETRAS & "ciento"
Case 5
LETRAS = LETRAS & "quinientos"
Case 7
LETRAS = LETRAS & "setecientos"
Case 9
LETRAS = LETRAS & "novecientos"
Case Else
LETRAS = LETRAS & Números(Int(Numero / 100000000))
End Select
If (Int(Numero / 100000000) <> 1) And (Int(Numero / 100000000) <> 5) And (Int(Numero / 100000000) <> 7) _
And (Int(Numero / 100000000) <> 9) Then
LETRAS = LETRAS & "cientos "
Else
LETRAS = LETRAS & " "
End If
End If
Millones = Int(Numero / 1000000)
If Int(Numero / 1000000) = 200 Or Int(Numero / 1000000) = 300 Or Int(Numero / 1000000) = 400 Or _
Int(Numero / 1000000) = 500 Or Int(Numero / 1000000) = 600 Or Int(Numero / 1000000) = 700 Or _
Int(Numero / 1000000) = 800 Or Int(Numero / 1000000) = 900 Then
LETRAS = LETRAS & "Millones "
End If
Numero = Numero - (Int(Numero / 100000000) * 100000000)
End If
'*---> Decenas de Millón
If (Numero < 100000000) And (Numero >= 10000000) Then
If Int(Numero / 1000000) < 30 Then
LETRAS = LETRAS & Números(Int(Numero / 1000000))
LETRAS = LETRAS & " millones "
Numero = Numero - (Int(Numero / 1000000) * 1000000)
Else
LETRAS = LETRAS & Números(Int(Numero / 10000000) * 10)
Numero = Numero - (Int(Numero / 10000000) * 10000000)
If Numero > 1000000 Then
LETRAS = LETRAS & " y "
End If
End If
End If
'*---> Unidades de Millón
If (Numero < 10000000) And (Numero >= 1000000) Then
If Int(Numero / 1000000) = 1 And Millones = 1 Then
LETRAS = LETRAS & " un millón de "
Else
LETRAS = LETRAS & Números(Int(Numero / 1000000))
LETRAS = LETRAS & " millones "
End If
Numero = Numero - (Int(Numero / 1000000) * 1000000)
End If
'*---> Centenas de Millar
If (Numero < 1000000) And (Numero >= 100000) Then
If (Int(Numero / 100000) = 1) And ((Numero - (Int(Numero / 100000) * 100000)) < 1000) Then
LETRAS = LETRAS & "cien "
Else
Select Case Int(Numero / 100000)
Case 1
LETRAS = LETRAS & "ciento"
Case 5
LETRAS = LETRAS & "quinientos"
Case 7
LETRAS = LETRAS & "setecientos"
Case 9
LETRAS = LETRAS & "novecientos"
Case Else
LETRAS = LETRAS & Números(Int(Numero / 100000))
End Select
If (Int(Numero / 100000) <> 1) And (Int(Numero / 100000) <> 5) And (Int(Numero / 100000) <> 7) _
And (Int(Numero / 100000) <> 9) Then
LETRAS = LETRAS & "cientos "
Else
LETRAS = LETRAS & " "
End If
End If
Numero = Numero - (Int(Numero / 100000) * 100000)
If (Int(Numero / 1000) - Int(Numero / 10000)) = 0 Then LETRAS = LETRAS & "mil "
End If
'*---> Decenas de Millar
If (Numero < 100000) And (Numero >= 10000) Then
If Int(Numero / 1000) < 30 Then
LETRAS = LETRAS & Números(Int(Numero / 1000))
LETRAS = LETRAS & " mil "
Numero = Numero - (Int(Numero / 1000) * 1000)
Else
LETRAS = LETRAS & Números(Int(Numero / 10000) * 10)
Numero = Numero - (Int((Numero / 10000)) * 10000)
If Numero > 1000 Then
LETRAS = LETRAS & " y "
Else
LETRAS = LETRAS & " mil "
End If
End If
End If
'*---> Unidades de Millar
If (Numero < 10000) And (Numero >= 1000) Then
If Int(Numero / 1000) = 1 Then
LETRAS = LETRAS & "un"
Else
LETRAS = LETRAS & Números(Int(Numero / 1000))
End If
LETRAS = LETRAS & " mil "
Numero = Numero - (Int(Numero / 1000) * 1000)
End If
'*---> Centenas
If (Numero < 1000) And (Numero > 99) Then
If (Int(Numero / 100) = 1) And ((Numero - (Int(Numero / 100) * 100)) < 1) Then
LETRAS = LETRAS & "cien "
Else
Select Case Int(Numero / 100)
Case 1
LETRAS = LETRAS & "ciento"
Case 5
LETRAS = LETRAS & "quinientos"
Case 7
LETRAS = LETRAS & "setecientos"
Case 9
LETRAS = LETRAS & "novecientos"
Case Else
LETRAS = LETRAS & Números(Int(Numero / 100))
End Select
If (Int(Numero / 100) <> 1) And (Int(Numero / 100) <> 5) And (Int(Numero /...