Códigos fuentes > Código fuente para escribir números en letras | ABR/2020
Es un código Fuente en VISUAL BASIC .NET que escribe en letras un número indicado que requiere la condición que sea menor a un millón. Deberás importar la clase "Microsoft.VisualBasic" con la siguiente sentencia:
| Imports VB = Microsoft.VisualBasic
Es un procedimiento llamado "subValorTotalLetras" que intercambia dos variables, una es el dato en donde se
indica el número en escritura numérica, y la segunda variable, es el
resultado que dá el procedimiento, que indica el número escrito en letras en una cadena de texto. Este procedimiento puedes adaptarlo, modificarlo
e insertarlo en tus proyectos de software sin problemas. Siempre es normal que debas realizar alguna modificación y deberás prestar
atención con el signo decimal, por si es punto o coma en la interpretación del fuente, y que normalización interpreta el compilador
de Visual Basic que utilizas. A continuación se describe el código fuente:
| 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
| 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
Fuentes similares a este es utilizado en los software MundoTec SueldoTec y VentaTec, desarrollados por mi, con un sin fin de codificaciones
de muchas funciones importantes, como intérprete de ecuaciones o gráficos cartesianos, que es un analizador léxico y sintáctico codificado
por mi bajo parámetros propios, para
lograr codificar programas informáticos empresariales en su totalidad. El código fuente de los software empresariales MundoTec SueldoTec y
VentaTec los ofrezco completos por medio de un archivo comprimido RAR con todo el proyecto completo por un valor económico reducido.
Puedes consultar por SueldoTec aquí o puedes
consultar por VentaTec aquí.
| 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
| 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