¿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

1 respuesta

Respuesta
1
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"

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas