Hola a todos.
Soy Luis y tengo la siguiente pregunta:
Estoy utilizando una Macro que hize para convertir moneda en numeros a letras, pero el asunto está en que cuando la cifra es 1000 me pone "Un Mil" y quiero que solo sea "Mil".
Ejem.: 1500 = Un Mil Quinientos Balboas con 00/100
En vez quiero que sea "Mil Quinientos Balboas con 00/100
Les paso el codigo para ver quien me puede ayudar con esto:
Function NALET(Number As Double, Optional Kurrencys As String, Optional Kurrency As String) As String
If Kurrencys = "" Then
Kurrencys = "Balboas con"
Kurrency = "Balboa con"
End If
If Kurrency = "" Then Kurrency = Kurrencys
Const MinNum = 0#
Const MaxNum = 4294967295.99
Dim Result As String
If (Number >= MinNum) And (Number <= MaxNum) Then
Dim Kurrenzy As String
Kurrenzy = Kurrency
If Number >= 2 Then Kurrenzy = Kurrencys
Result = RecurseNumber((Fix(Number)))
If Round((Number - Fix(Number)) * 100) < 10 Then
Result = Result + " " + Kurrenzy + " 0" + Mid(Str(Round((Number - Fix(Number)) * 100)), 2, 1) + "/100"
Else
Result = Result + " " + Kurrenzy + " " + Mid(Str(Round((Number - Fix(Number)) * 100)), 2, 2) + "/100"
End If
Else
Result = "Error, verifique la cantidad."
End If
NALET = Result
End Function
Function RecurseNumber(N As Long) As String
Dim Numbers, Tenths, Hundrens
Numbers = Array("Cero", "Un", "Dos", "Tres", "Cuatro", "Cinco", "Seis", "Siete", "Ocho", "Nueve", "Diez", "Once", "Doce", "Trece", "Catorce", "Quince", "Dieciséis", "Diecisiete", "Dieciocho", "Diecinueve", "Veinte", _
"Veintiún", "Veintidós", "Veintitrés", "Veinticuatro", "Veinticinco", "Veintiséis", "Veintisiete", "Veintiocho", "Veintinueve")
Tenths = Array("Cero", "Diez", "Veinte", "Treinta", "Cuarenta", "Cincuenta", "Sesenta", "Setenta", "Ochenta", "Noventa", "Cien")
Hundrens = Array("Cero", "Ciento", "Doscientos", "Trescientos", "Cuatrocientos", "Quinientos", "Seiscientos", "Setecientos", "Ochocientos", "Novecientos")
Dim Result As String
Select Case N
Case 0
Result = ""
Case 1 To 29
Result = Numbers(N)
Case 30 To 100
Result = Tenths(N \ 10) + IIf(N Mod 10 <> 0, " Y " + RecurseNumber(N Mod 10), "")
Case 101 To 999
Result = Hundrens(N \ 100) + IIf(N Mod 100 <> 0, " " + RecurseNumber(N Mod 100), "")
Case 1000 To 999999
Result = RecurseNumber(N \ 1000) + " Mil" + IIf(N Mod 1000 <> 0, " " + RecurseNumber(N Mod 1000), "")
End Select
RecurseNumber = Result
End Function
Sub Nl()
End Sub
Saludos
Luis Gonzalez
Leer las respuestas