Nombre: Convertir un numero a letras
Descripción:
Contine una función pública que recibe como argumento un número y devuelve una cadena de moneda en pesos y centavos.
URL: http://www.mygnet.net/codigos/vb/calculoyconversiones/convertir_un_numero_a_letras.1186
Código Fuente:
Public Function Letras(Número)
numCentavos = Round(Número - Int(Número), 2) * 100
If numCentavos = 100 Then
ltrCentavos = " pesos."
Else
ltrCentavos = " pesos con " & numCentavos & "/100."
End If
Número = Int(Número)
If numCentavos = 100 Then Número = Número + 1
Select Case Número
Case Is > 999999999
msg = MsgBox("El número es demasiado grande para usar esta función", 48, "¡¡¡ Error !!!")
Case Is <= 0
msg = MsgBox("El número debe ser positivo", 48, "¡¡¡ Error !!!")
Case Is < 1000
Letras = Centena(Número) & ltrCentavos
Case Is < 1000000
Letras = CienMil(Número) & ltrCentavos
Case Else
Letras = Millón(Número) & ltrCentavos
End Select
End Function
Private Function Millón(Número)
numMillón = Int(Número / 1000000)
numMiles = Int(Número - numMillón * 1000000)
If numMiles > 0 Then
ltrMiles = CienMil(numMiles)
End If
If numMillón = 1 Then
ltrMillón = "un millón"
Else
ltrMillón = Centena(numMillón) & " millones"
End If
Millón = ltrMillón & ltrMiles
End Function
Private Function CienMil(Número)
numCienMil = Int(Número / 1000)
numCentena = Int(Número - numCienMil * 1000)
ltrCentena = Centena(numCentena)
If numCienMil = 1 Then
ltrMiles = "un"
Else
ltrMiles = Centena(numCienMil)
End If
CienMil = ltrMiles & " mil" & ltrCentena
End Function
Private Function Centena(Número)
If Número = 100 Then
Centena = " cien"
Else
cientos = Int(Número / 100)
numDecena = Int(Número - cientos * 100)
ltrDecena = Decena(numDecena)
Select Case cientos
Case 9
ltrCentena = " novecientos"
Case 8
ltrCentena = " ochocientos"
Case 7
ltrCentena = " setecientos"
Case 6
ltrCentena = " seiscientos"
Case 5
ltrCentena = " quinientos"
Case 4
ltrCentena = " cuatrocientos"
Case 3
ltrCentena = " trecientos"
Case 2
ltrCentena = " docientos"
Case 1
ltrCentena = " ciento"
End Select
Centena = ltrCentena & " " & ltrDecena
End If
End Function
Private Function Decena(Número)
Select Case Número
Case Is > 15
ltrDecena = DecenaNo15(Número)
Case Is < 10
ltrDecena = Unidades(Número)
Case Is = 10
ltrDecena = " diez"
Case Is = 11
ltrDecena = " once"
Case Is = 12
ltrDecena = " doce"
Case Is = 13
ltrDecena = " trece"
Case Is = 14
ltrDecena = " catorce"
Case Is = 15
ltrDecena = " quince"
End Select
Decena = ltrDecena
End Function
Private Function Unidades(Número)
Select Case Número
Case Is = 1
Unidades = "un"
Case Is = 2
Unidades = "dos"
Case Is = 3
Unidades = "tres"
Case Is = 4
Unidades = "cuatro"
Case Is = 5
Unidades = "cinco"
Case Is = 6
Unidades = "seis"
Case Is = 7
Unidades = "siete"
Case Is = 8
Unidades = "ocho"
Case Is = 9
Unidades = "nueve"
End Select
End Function
Private Function DecenaNo15(Número)
If Número = 20 Then
DecenaNo15 = "veinte "
Else
decDecena = Int(Número / 10)
unidecena = Número - decDecena * 10
Select Case decDecena
Case Is = 1
ltrDecena = "diec"
Case Is = 2
ltrDecena = "veint"
Case Is = 3
ltrDecena = "treinta"
Case Is = 4
ltrDecena = "cuarenta"
Case Is = 5
ltrDecena = "cincuenta"
Case Is = 6
ltrDecena = "sesenta"
Case Is = 7
ltrDecena = "setenta"
Case Is = 8
ltrDecena = "ochenta"
Case Is = 9
ltrDecena = "noventa"
End Select
If unidecena = 0 Then
DecenaNo15 = ltrDecena
Else
If unidecena > 30 Then
DecenaNo15 = ltrDecena & ltrUniDecena(unidecena)
Else
DecenaNo15 = ltrDecena & ltrUniDecenai(unidecena)
End If
End If
End If
End Function
Private Function ltrUniDecena(Número)
ltrUniDecena = " y " & Unidades(Número)
End Function
Private Function ltrUniDecenai(Número)
ltrUniDecenai = "i" & Unidades(Número)
End Function