Urge para proyecto de facturacion

Soy nueva en esto del Visual, Necesito Cambiar un Numero en texto, pero no de la forma habitual si no a verdadero texto, por ej:
1200.00
a
Mil docientos 00/100
O
2457.70
a
Dos mil cuatrocientos cincuenta y sielte 70/100
lo ultimo de xx/100 son los centavos, pero lo realmente preocupante es que no se como lograr realizar este cambio

2 Respuestas

Respuesta
1
Option Explicit
'Este Módulo contiene las Funciones para Traducir
'los Números a Palabras Utilizando Recursividad
Public Numero(18) As String
Public Const Concatenar = "y" 'Palabra que Concatena los Números
Public Punto As String 'Palabra para el punto decimal
Public Const cientos = "cientos" 'para las centenas
Public Const millares = "mil" 'para los millares
Public Const millones = "millones" 'para los millones
'Public const billones = "billones" 'para los billones
'Public const trillones = "trillones" 'para los trillones
Public Decenas(8) As String 'para el 20,30,40,50,60,70,80,90
Public CentenasEspeciales(9) As String '100,500,700,900
Public Sub LlenarNumeros()
Punto = " con " 'Como se Leerá el Punto
Numero(0) = ""
Numero(1) = "Uno"
Numero(2) = "Dos"
Numero(3) = "Tres"
Numero(4) = "Cuatro"
Numero(5) = "Cinco"
Numero(6) = "Seis"
Numero(7) = "Siete"
Numero(8) = "Ocho"
Numero(9) = "Nueve"
Numero(10) = ""
Numero(11) = "Once"
Numero(12) = "Doce"
Numero(13) = "Trece"
Numero(14) = "Catorce"
Numero(15) = "Quince"
'Números con pronunciaciónes Especiales
Numero(16) = "Dieci"
Numero(17) = "Veinti"
'Nombres para las Decenas Básicas
Decenas(0) = "Diez"
Decenas(1) = "Veinte"
Decenas(2) = "Treinta"
Decenas(3) = "Cuarenta"
Decenas(4) = "Cincuenta"
Decenas(5) = "Sesenta"
Decenas(6) = "Setenta"
Decenas(7) = "Ochenta"
Decenas(8) = "Noventa"
'Centenas Especiales
CentenasEspeciales(0) = "Cien"
CentenasEspeciales(1) = "Ciento"
CentenasEspeciales(4) = "Quinientos"
CentenasEspeciales(6) = "Setecientos"
CentenasEspeciales(8) = "Novecientos"
End Sub
Public Function Traducir(num As String) As String
'Funcion que devuelve el numero traducido (completo)
Dim enteros As Integer 'Longitud del numero entero
Dim decimales As Integer 'Numeros decimales
Dim p_entera As String 'Parte Entera del Número
Dim p_decimal As String 'Parte decimal
If InStr(1, num, ".") = 0 Then 'Verificamos si existe punto decimal
enteros = CInt(Len(num))
Else
enteros = CInt(Len(Mid(num, 1, InStr(1, num, ".") - 1)))
decimales = CInt(Len(Trim(Mid(num, InStr(1, num, ".") + 1, Len(num)))))
End If
'Primero Traducimos la Parte Entera del Número
p_entera = LeerNumero(Mid(num, 1, enteros))
'Luego, si hay decimales, los traducimos
If decimales > 0 Then
p_decimal = Punto & LeerNumero(Trim(Mid(num, InStr(1, num, ".") + 1, Len(num))))
End If
Traducir = p_entera & p_decimal
End Function
Private Function LeerNumero(num As String) As String
'Funcion Recursiva que devuelve el número, traducido
On Error GoTo error_leernumero
Dim level As Integer 'decenas,centenas,millares..
Dim texto As String 'texto numérico
level = Len(num) 'Longitud de la cadena
Select Case level 'Segun sea el Nivel
Case 1: 'Nivel Básico
texto = texto & Numero(CInt(num))
Case 2: 'Nivel Decimal
Select Case CInt(num)
Case 11 To 15:
texto = texto & Numero(CInt(num))
Case 16 To 19
texto = Numero(16) & LCase(LeerNumero(Mid(num, 2, 1)))
Case 10, 20, 30, 40, 50, 60, 70, 80, 90
texto = Decenas(CInt(Mid(num, 1, 1)) - 1)
Case 20 To 29:
texto = Numero(17) & LCase(LeerNumero(Mid(num, 2, 1)))
Respuesta
1
Soy Enrique.
Veamos si puedo darte la pauta para que puedas saber como se hace.
1.- En un nuevo proyecto en un formulario crea un botón de comando.
2.- En el PROCEDIMIENTO Click del botón pega el código que está al final de este mensaje.
3.- Ejecuta el programa y haz click sobre el botón de comando. En el formulario se imprimirá el valor en texto.
4.- Puedes hacer crecer el código para poner decenas de millar, centenas de millar etcetera.
Espero haberte ayudado.
'Inicio del código
VT$ = "2457.70"
PPD = InStr(VT$, ".")
TEXTO$ = "pesos con " + Right$(VT$, Len(VT$) - PPD) + "/100"
For X = 1 To PPD - 1
B = Val(Mid$(VT$, PPD - X, 1))
If B = 1 And X = 1 Then PROV$ = "UN"
If B = 2 And X = 1 Then PROV$ = "DOS"
If B = 3 And X = 1 Then PROV$ = "TRES"
If B = 4 And X = 1 Then PROV$ = "CUATRO"
If B = 5 And X = 1 Then PROV$ = "CINCO"
If B = 6 And X = 1 Then PROV$ = "SEIS"
If B = 7 And X = 1 Then PROV$ = "SIETE"
If B = 8 And X = 1 Then PROV$ = "OCHO"
If B = 9 And X = 1 Then PROV$ = "NUEVE"
If B = 0 And X = 1 Then PROV$ = " "
If B = 1 And X = 2 Then PROV$ = "DIEZ"
If B = 2 And X = 2 Then PROV$ = "VEINTE"
If B = 3 And X = 2 Then PROV$ = "TREINTA"
If B = 4 And X = 2 Then PROV$ = "CUARENTA"
If B = 5 And X = 2 Then PROV$ = "CINCUENTA"
If B = 6 And X = 2 Then PROV$ = "SESENTA"
If B = 7 And X = 2 Then PROV$ = "SETENTA"
If B = 8 And X = 2 Then PROV$ = "OCHENTA"
If B = 9 And X = 2 Then PROV$ = "NOVENTA"
If B = 0 And X = 2 Then PROV$ = ""
If B = 1 And X = 3 Then PROV$ = "CIENTO"
If B = 2 And X = 3 Then PROV$ = "DOSCIENTOS"
If B = 3 And X = 3 Then PROV$ = "TRECIENTOS"
If B = 4 And X = 3 Then PROV$ = "CUATROCIENTOS"
If B = 5 And X = 3 Then PROV$ = "QUINIENTOS"
If B = 6 And X = 3 Then PROV$ = "SEISCIENTOS"
If B = 7 And X = 3 Then PROV$ = "SETECIENTOS"
If B = 8 And X = 3 Then PROV$ = "OCHOCIENTOS"
If B = 9 And X = 3 Then PROV$ = "NOVECIENTOS"
If B = 0 And X = 3 Then PROV$ = ""
If B = 1 And X = 4 Then PROV$ = "MIL"
If B = 2 And X = 4 Then PROV$ = "DOS MIL"
If B = 3 And X = 4 Then PROV$ = "TRES MIL"
If B = 4 And X = 4 Then PROV$ = "CUATRO MIL"
If B = 5 And X = 4 Then PROV$ = "CINCO MIL"
If B = 6 And X = 4 Then PROV$ = "SEIS MIL"
If B = 7 And X = 4 Then PROV$ = "SETE MIL"
If B = 8 And X = 4 Then PROV$ = "OCHO MIL"
If B = 9 And X = 4 Then PROV$ = "NUEVE MIL"
If B = 0 And X = 4 Then PROV$ = ""
If PROV$ = "DIEZ" And Left$(TEXTO$, 2) = "UN" Then PROV$ = "ONCE": TEXTO$ = Right$(TEXTO$, Len(TEXTO$) - 2)
If PROV$ = "DIEZ" And Left$(TEXTO$, 3) = "DOS" Then PROV$ = "DOCE": TEXTO$ = Right$(TEXTO$, Len(TEXTO$) - 3)
If PROV$ = "DIEZ" And Left$(TEXTO$, 4) = "TRES" Then PROV$ = "TRECE": TEXTO$ = Right$(TEXTO$, Len(TEXTO$) - 4)
If PROV$ = "DIEZ" And Left$(TEXTO$, 6) = "CUATRO" Then PROV$ = "CATORCE": TEXTO$ = Right$(TEXTO$, Len(TEXTO$) - 6)
If PROV$ = "DIEZ" And Left$(TEXTO$, 5) = "CINCO" Then PROV$ = "QUINCE": TEXTO$ = Right$(TEXTO$, Len(TEXTO$) - 5)
If PROV$ = "VEINTE" And Left$(TEXTO$, 1) <> " " Then PROV$ = "VEINTI"
If X = 2 And Left$(TEXTO$, 1) <> " " And PROV$ <>

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas