Pasar numero decimales en textbox a letras
Estoy pasando números decimales a letras, más concretamente los números comprendidos entre el 0,60 al 2,10, con una instrucción de Neckkito, la cual he adaptado a mis necesidades y me funciona bien, pero cuando llego al 1,10 ya no me va tan bien, es decir con la instrucción me sale UNO COMA CERO DIEZ, cuando me debería de salir UNO COMA DIEZ y a partir de esa cifra ya no salen bien el paso a letras, por ejemplo pongo 1,55 y sale UNO COMA CERO CINCUENTA Y CINCO. He estado modificando la instrucción, pero no doy con la tecla. Que debería de modificar en la instrucción, para que a partir de ese número 1,10 me saliera correctamente. Adjunto la instrucción que estoy utilizando y modificada a mis necesidades.
Public Function num2let(ByVal value As Double, Optional vCurr As String) As String
Dim vDec As String
vDec = Num2Text(Int(Round((value - Int(value)) * 100)))
If vDec = "CERO" Then
If Int(value) = 1 Then
num2let = "UNO" & " COMA " & " CERO " & vDec & " " & UCase(vCurr)
Else
num2let = Num2Text(Int(value)) & " " & UCase(vCurr)
End If
Else
If Int(value) = 1 Then
num2let = "UNO" & " COMA " & " CERO " & vDec & " " & UCase(vCurr)
Else
num2let = Num2Text(Int(value)) & " COMA " & vDec & " " & UCase(vCurr)
End If
End If
End Function
Public Function Num2Text(ByVal value As Double) As String
Select Case value
Case 0: Num2Text = "CERO"
Case 1: Num2Text = "UNO"
Case 2: Num2Text = "DOS"
Case 3: Num2Text = "TRES"
Case 4: Num2Text = "CUATRO"
Case 5: Num2Text = "CINCO"
Case 6: Num2Text = "SEIS"
Case 7: Num2Text = "SIETE"
Case 8: Num2Text = "OCHO"
Case 9: Num2Text = "NUEVE"
Case 10: Num2Text = "DIEZ"
Case 11: Num2Text = "ONCE"
Case 12: Num2Text = "DOCE"
Case 13: Num2Text = "TRECE"
Case 14: Num2Text = "CATORCE"
Case 15: Num2Text = "QUINCE"
Case Is < 20: Num2Text = "DIECI" & Num2Text(value - 10)
Case 20: Num2Text = "VEINTE"
Case Is < 30: Num2Text = "VEINTI" & Num2Text(value - 20)
Case 30: Num2Text = "TREINTA"
Case 40: Num2Text = "CUARENTA"
Case 50: Num2Text = "CINCUENTA"
Case 60: Num2Text = "SESENTA"
Case 70: Num2Text = "SETENTA"
Case 80: Num2Text = "OCHENTA"
Case 90: Num2Text = "NOVENTA"
Case Is < 100: Num2Text = Num2Text(Int(value \ 10) * 10) & " Y " & Num2Text(value Mod 10)
Case 100: Num2Text = "CIEN"
End Select
En el formulario tengo dos textbox, (Texto30, TxtLetras) donde en uno introduzco el numero y en el otro me lo pasa a la siguiente instrucción:
Private Sub Texto30_LostFocus()
Dim vImp As Variant, vImpLet As String
vImp = Me.Texto30.value
' 'Si el importe estuviera en blanco borra valores, si los hubiera, y sale del proceso
If IsNull(vImp) Then
Me.TxtLetras4.value = Null
Exit Sub
End If
'Convertimos el importe a letras a través de la función
vImpLet = num2let(vImp)
'Asignamos el valor obtenido a nuestro cuadro de texto
Me.TxtLetras4.value = vImpLet
End Sub