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
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)))
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$ <>