Function NumATexto(ByVal Valor As Double) As String
On Error GoTo RutError
Select Case Valor
Case 0: NumATexto = "CERO"
Case 1: NumATexto = "UN"
Case 2: NumATexto = "DOS"
Case 3: NumATexto = "TRES"
Case 4: NumATexto = "CUATRO"
Case 5: NumATexto = "CINCO"
Case 6: NumATexto = "SEIS"
Case 7: NumATexto = "SIETE"
Case 8: NumATexto = "OCHO"
Case 9: NumATexto = "NUEVE"
Case 10: NumATexto = "DIEZ"
Case 11: NumATexto = "ONCE"
Case 12: NumATexto = "DOCE"
Case 13: NumATexto = "TRECE"
Case 14: NumATexto = "CATORCE"
Case 15: NumATexto = "QUINCE"
Case Is < 20: NumATexto = "DIECI" & NumATexto(Valor - 10)
Case 20: NumATexto = "VEINTE"
Case Is < 30: NumATexto = "VEINTI" & NumATexto(Valor - 20)
Case 30: NumATexto = "TREINTA"
Case 40: NumATexto = "CUARENTA"
Case 50: NumATexto = "CINCUENTA"
Case 60: NumATexto = "SESENTA"
Case 70: NumATexto = "SETENTA"
Case 80: NumATexto = "OCHENTA"
Case 90: NumATexto = "NOVENTA"
Case Is < 100: NumATexto = NumATexto(Int(Valor \ 10) * 10) & " Y " & NumATexto(Valor Mod 10)
Case 100: NumATexto = "CIEN"
Case Is < 200: NumATexto = "CIENTO " & NumATexto(Valor - 100)
Case 200, 300, 400, 600, 800: NumATexto = NumATexto(Int(Valor \ 100)) & "CIENTOS"
Case 500: NumATexto = "QUINIENTOS"
Case 700: NumATexto = "SETECIENTOS"
Case 900: NumATexto = "NOVECIENTOS"
Case Is < 1000: NumATexto = NumATexto(Int(Valor \ 100) * 100) & " " & NumATexto(Valor Mod 100)
Case 1000: NumATexto = "MIL"
Case Is < 2000: NumATexto = "MIL " & NumATexto(Valor Mod 1000)
Case Is < 1000000: NumATexto = NumATexto(Int(Valor \ 1000)) & " MIL"
If Valor Mod 1000 Then
NumATexto = NumATexto & " " & NumATexto(Valor Mod 1000)
End If
Case 1000000: NumATexto = "UN MILLON"
Case Is < 2000000: NumATexto = "UN MILLON " & NumATexto(Valor Mod 1000000)
Case Is < 1000000000000#: NumATexto = NumATexto(Int(Valor / 1000000)) & " MILLONES"
If (Valor - Int(Valor / 1000000) * 1000000) Then
NumATexto = NumATexto & " " & NumATexto(Valor - Int(Valor / 1000000) * 1000000)
End If
Case 1000000000000#: NumATexto = "UN BILLON"
Case Is < 2000000000000#: NumATexto = "UN BILLON " & NumATexto(Valor - Int(Valor / 1000000000000#) * 1000000000000#)
Case Else: NumATexto = NumATexto(Int(Valor / 1000000000000#)) & " BILLONES"
If (Valor - Int(Valor / 1000000000000#) * 1000000000000#) Then
NumATexto = NumATexto & " " & NumATexto(Valor - Int(Valor / 1000000000000#) * 1000000000000#)
End If
End Select
Exit Function
RutError:
MsgBox "Debe introducir Numeros", vbCritical, "Aviso (NumATexto)"
End Function