Hola:
La referencia que dejo el amigo, es buena, ahí hay un formulario con un textbox, en el cual ingresas un numero y te lo da en letras en un label. Como defecto, no trabaja con centavos.(o decimaes en este caso) si queres convertir pesos en letra, entonces tenes que tener en cuenta este detalle.
El codigo que aca te paso, es una funcion que te devuelve una cadena, con la cual podes llenar un cuadro de texto o un label o en el caso que yo lo use, una variable que representaba un espacio en un documento de word, para armar un contrato de locacion.
Para pasar de un cuadro de texto en numeros(text1.text) a un cuadro de texto en letras(text2.text) basta con invocar la funcion pasandole el parametro del valor en numeros.
text2.text=PesoLe(Val(Text1.Text))
Espero que te sirva:
Public Function PesoLe(Nm As Double) As String
Dim Nu As Long, ca As String, cad As String, finca As String, d As Double, centa As String
Dim prica As String, cienca As String, n As String, caci As String
Dim milca As String, miles As String, cant As Long, pesos As String, dece As String, Fino%
Fino = 1
Nu = Fix(Nm) 'Nu parte entera
d = Nm - Nu 'd parte decimal
cad = Str$(Nu)
If Nu <> Nm Then '------- enletrado de decimales -----------------
n = LTrim$(Str$(Fix(d * 101)))
If d * 100 < 16 Then
GoSub xunidad
Else
prica = Left$(LTrim$(Str$(Fix(d * 101))), 1)
GoSub xdecena
n = Right$(LTrim$(Str$(Fix(d * 101))), 1)
GoSub xunidad
End If
If ca = "uno" Then
centa = pesos + " con " + dece + "un centavo"
Else
centa = pesos + " con " + dece + ca + " centavos"
End If
End If
If Nm > 999.99 Then '------enletrado de los encima de mil -------------
cant = Len(cad): milca = LTrim$(Mid$(cad, 1, cant - 3))
Select Case Val(LTrim$(milca))
Case 0 To 15: n = LTrim$(milca): GoSub xunidad:
If n = "1" Then
miles = "mil"
Else
miles = ca + "mil"
End If
Case 16 To 99: prica = Left$(LTrim$(milca), 1): GoSub xdecena
n = Right$(LTrim$(milca), 1)
GoSub xunidad:
miles = dece + ca + "mil"
Case 100 To 999: cienca = Left$(LTrim$(milca), 1): GoSub xciento
prica = Mid$(LTrim$(milca), 2, 1): GoSub xdecena
n = Right$(LTrim$(milca), 1): GoSub xunidad
miles = caci + dece + ca + "mil"
End Select 'de los milca
Nu = Nu - (Val(milca) * 1000)
End If '------------ fin de los miles -----------
cad = Str$(Nu)
Select Case Nu
Case 0 To 15: n = LTrim$(cad): GoSub xunidad: pesos = ca
Case 16 To 99: prica = Left$(LTrim$(cad), 1): GoSub xdecena
n = Right$(LTrim$(cad), 1)
GoSub xunidad:
pesos = dece + ca
Case 100 To 999: cienca = Left$(LTrim$(cad), 1): GoSub xciento
prica = Mid$(LTrim$(cad), 2, 1): GoSub xdecena
n = Right$(LTrim$(cad), 1): GoSub xunidad
pesos = caci + dece + ca
End Select
PesoLe = "Son Pesos:" + miles + pesos + centa
Exit Function '----------------fin del main------------
xciento:
Select Case cienca
Case "0": caci = ""
Case "1": caci = "ciento"
Case "2": caci = "dosciento"
Case "3": caci = "tresciento"
Case "4": caci = "cuatrociento"
Case "5": caci = "quiniento"
Case "6": caci = "seisciento"
Case "7": caci = "seteciento"
Case "8": caci = "ochociento"
Case "9": caci = "noveciento"
End Select
Return
xunidad:
Select Case n
Case "0": ca = "": Fino = 0
Case "1": ca = "uno"
Case "2": ca = "dos"
Case "3": ca = "tres"
Case "4": ca = "cuatro"
Case "5": ca = "cinco"
Case "6": ca = "seis"
Case "7": ca = "siete"
Case "8": ca = "ocho"
Case "9": ca = "nueve"
Case "10": ca = "diez"
Case "11": ca = "once"
Case "12": ca = "doce"
Case "13": ca = "trece"
Case "14": ca = "catorce"
Case "15": ca = "quince"
End Select
Return
xdecena:
Select Case prica
Case " ": dece = " "
Case "1": dece = "diezy"
Case "2": dece = "veintey"
Case "3": dece = "treintay"
Case "4": dece = "cuarentay"
Case "5": dece = "cincuentay"
Case "6": dece = "sesentay"
Case "7": dece = "setentay"
Case "8": dece = "ochentay"
Case "9": dece = "noventay"
End Select
Return
End Function
Dios te bendiga
Saludos
Antonio