¿Cómo se puede transformar un numero en texto en Visual Basic?
Como contador es común que además de escribir un número, requiera escribir ese mismo número en letras y con la moneda que corresponda. Por ejemplo, $430.15 (Cuatrocientos treinta pesos 15/100) o E1, 025.03 (Un mil veinticinco euros 03/100), tengo conocimientos de EXCEL, se usar muchas fórmulas y funciones. Estoy consiente de que no existe una función para que arroje dicho resultado.
Sin embargo no se absolutamente nada de Visual Basic, por lo que se me complica mucho lo que he leído al respecto. Agradecería me guiaran paso a paso de manera tal que pudiera utilizar una función o programa en VB que me diera el resultado que deseo De antemano Gracias
Para hacer lo que pides tienes que crear una Función desde el editor de Visual Basic (Presiona ALT + F11) en menu Insertar --> Modulo, ahora pega ahí lo siguiente: Function Pesos(Number As Single) As String Const MinNum = 1# Const MaxNum = 4294967295.99 Dim Numbers, Tenths, Result As String Numbers = array("cero", "un", "dos", "tres", "cuatro", "cinco", "seis", "siete", "ocho", "nueve", "diez", "once", "doce", "trece", "catorce", "quince", "dieciseis", "diecisiete", "dieciocho", "diecinueve") Tenths = Array("CERO", "DIEZ", "VEINTE", "TREINTA", "CUARENTA", "CINCUENTA", "SESENTA", "SETENTA", "OCHENTA", "NOVENTA") If (Number >= MinNum) And (Number <= MaxNum) Then Result = RecurseNumber((Fix(Number))) If Round((Number - Fix(Number)) * 100) < 10 Then Result = Result + "PESOS" + " 0" + Mid(Str(Round((Number - Fix(Number)) * 100)), 2, 1) + "/100 M.N." Else Result = Result + "PESOS" + Str(Round((Number - Fix(Number)) * 100)) + "/100 M.N." End If Else Result = "Error, verifique la cantidad." End If Pesos = Result End Function Function RecurseNumber(N As Long) As String Dim Numbers, Tenths Numbers = array("cero", "un", "dos", "tres", "cuatro", "cinco", "seis", "siete", "ocho", "nueve", "diez", "once", "doce", "trece", "catorce", "quince", "dieciseis", "diecisiete", "dieciocho", "diecinueve") Tenths = Array("CERO", "DIEZ", "VEINTE", "TREINTA", "CUARENTA", "CINCUENTA", "SESENTA", "SETENTA", "OCHENTA", "NOVENTA") Hundrens = array("cero", "ciento", "doscientos", "trescientos", "cuatrocientos", "quinientos", "seiscientos", "setecientos", "ochocientos", "novecientos") Dim Result As String Select Case N Case 0 Result = "" Case 1 To 19 Result = Numbers(N) Case 20 To 99 If N Mod 10 <> 0 Then Result = Tenths(N \ 10) + " Y " + RecurseNumber(N Mod 10) Else Result = Tenths(N \ 10) + " " + RecurseNumber(N Mod 10) End If Case 100 To 999 If N \ 100 = 1 Then If N = 100 Then Result = "CIEN" + " " + RecurseNumber(N Mod 100) Else Result = Hundrens(N \ 100) + " " + RecurseNumber(N Mod 100) End If Else Result = Hundrens(N \ 100) + " " + RecurseNumber(N Mod 100) End If Case 1000 To 999999 Result = RecurseNumber(N \ 1000) + " MIL " + RecurseNumber(N Mod 1000) Case 1000000 To 999999999 Result = RecurseNumber(N \ 1000000) + " MILLONES " + RecurseNumber(N Mod 1000000) Case 1000000000 To 4294967295# Result = RecurseNumber(N \ 1000000000) + " BILLONES " + RecurseNumber(N Mod 1000000000) End Select RecurseNumber = Result End Function '---- FIN DE LA FUNCION PESOS------------ 'Para usarlo es = que una funcion de excel, ejemplo: '=pesos(suma(a1:a15)) '=pesos(total) cierra el editor y en cualquier celda escribe algo asi: =PESOS(B19) Y veras que se pone la cantidad en letras P.D. Yo no cree esta macro, me la encontré por ahí "googleando"