Escribir en letras un número
Visual Basic.NET
2.134 visualizaciones desde el 21 de Abril del 2020
Escribir en letras un número dado. Es un procedimiento en Visual Basic .NET que se le ingresa un numero y luego da el resultado escrito en letras.
Public Sub subValorTotalLetras(ByRef TotalNeto As Single, ByRef NumeroEscrito As String)
Dim TresNumeros As String
Dim MasTresNumeros As Boolean
Dim Terminacion As Boolean
Try
' Inicializar variables
NumeroEscrito = ""
' Escribir el valor total en letras menor a un millon
Select Case Len(VB.Right(Str(Fix(TotalNeto)), Len(Str(Fix(TotalNeto))) - 1))
Case Is <= 3
TresNumeros = New String("0", 3 - Len(VB.Right(Str(Fix(TotalNeto)), Len(Str(Fix(TotalNeto))) - 1))) & VB.Right(Str(Fix(TotalNeto)), Len(Str(Fix(TotalNeto))) - 1)
Case Is > 3
TresNumeros = VB.Left(New String("0", 6 - Len(Trim(Str(Fix(TotalNeto))))) & Trim(Str(Fix(TotalNeto))), 3)
MasTresNumeros = True
End Select
Do
System.Windows.Forms.Application.DoEvents()
Select Case VB.Left(TresNumeros, 1)
Case "1"
If Mid(TresNumeros, 2, 1) = "0" And VB.Right(TresNumeros, 1) = "0" Then
NumeroEscrito = NumeroEscrito & "cien "
Else
NumeroEscrito = NumeroEscrito & "ciento "
End If
Case "2"
NumeroEscrito = NumeroEscrito & "doscientos "
Case "3"
NumeroEscrito = NumeroEscrito & "trescientos "
Case "4"
NumeroEscrito = NumeroEscrito & "cuatrocientos "
Case "5"
NumeroEscrito = NumeroEscrito & "quinientos "
Case "6"
NumeroEscrito = NumeroEscrito & "seiscientos "
Case "7"
NumeroEscrito = NumeroEscrito & "setecientos "
Case "8"
NumeroEscrito = NumeroEscrito & "ochocientos "
Case "9"
NumeroEscrito = NumeroEscrito & "novecientos "
End Select
Select Case Mid(TresNumeros, 2, 1)
Case "1"
Select Case VB.Right(TresNumeros, 1)
Case "0"
NumeroEscrito = NumeroEscrito & "diez "
Case "1"
NumeroEscrito = NumeroEscrito & "once "
Case "2"
NumeroEscrito = NumeroEscrito & "doce "
Case "3"
NumeroEscrito = NumeroEscrito & "trece "
Case "4"
NumeroEscrito = NumeroEscrito & "catorse "
Case "5"
NumeroEscrito = NumeroEscrito & "quince "
Case "6"
NumeroEscrito = NumeroEscrito & "dieciséis "
Case "7"
NumeroEscrito = NumeroEscrito & "diecisiete "
Case "8"
NumeroEscrito = NumeroEscrito & "dieciocho "
Case "9"
NumeroEscrito = NumeroEscrito & "diecinueve "
End Select
Terminacion = True
Case "2"
NumeroEscrito = NumeroEscrito & "veinte "
Case "3"
NumeroEscrito = NumeroEscrito & "treinta "
Case "4"
NumeroEscrito = NumeroEscrito & "cuarenta "
Case "5"
NumeroEscrito = NumeroEscrito & "cincuenta "
Case "6"
NumeroEscrito = NumeroEscrito & "sesenta "
Case "7"
NumeroEscrito = NumeroEscrito & "setenta "
Case "8"
NumeroEscrito = NumeroEscrito & "ochenta "
Case "9"
NumeroEscrito = NumeroEscrito & "noventa "
End Select
If VB.Right(TresNumeros, 1) <> "0" And Mid(TresNumeros, 2, 1) <> "0" And Terminacion = False Then
NumeroEscrito = NumeroEscrito & "y "
End If
If Terminacion = False Then
Select Case VB.Right(TresNumeros, 1)
Case "1"
If MasTresNumeros = True Then
NumeroEscrito = NumeroEscrito & "un "
Else
NumeroEscrito = NumeroEscrito & "uno "
End If
Case "2"
NumeroEscrito = NumeroEscrito & "dos "
Case "3"
NumeroEscrito = NumeroEscrito & "tres "
Case "4"
NumeroEscrito = NumeroEscrito & "cuatro "
Case "5"
NumeroEscrito = NumeroEscrito & "cinco "
Case "6"
NumeroEscrito = NumeroEscrito & "seis "
Case "7"
NumeroEscrito = NumeroEscrito & "siete "
Case "8"
NumeroEscrito = NumeroEscrito & "ocho "
Case "9"
NumeroEscrito = NumeroEscrito & "nueve "
End Select
Else
Terminacion = False
End If
If MasTresNumeros = True Then
TresNumeros = VB.Right(Str(Fix(TotalNeto)), 3)
NumeroEscrito = NumeroEscrito & "mil "
MasTresNumeros = False
Else
Exit Do
End If
Loop
If InStr(Str(TotalNeto), ".") <> 0 Then
NumeroEscrito = NumeroEscrito & "con " & VB.Right(Str(CInt(TotalNeto * 100)), 2) & "/100"
End If
Catch ex As Exception
MsgBox(Err.Description, MsgBoxStyle.Critical)
End Try
End Sub
Comentarios sobre la versión: 2010 (0)
No hay comentarios