Pasar de números a letras en excel

Buen día!

me colaboran por favor... Tengo un archivo en el que deseo pasar los valores a letras... El código que tengo me resulta bien pero, no me salen los pesos...

ej:

$100.000 ---------- cien mil

pero no me pone el cien mil "PESOS"

el código que tengo es:

ublic Function Num2Text(ByVal value As Double) As String
Select Case value
Case 0: Num2Text = "CERO"
Case 1: Num2Text = "UN"
Case 2: Num2Text = "DOS"
Case 3: Num2Text = "TRES"
Case 4: Num2Text = "CUATRO"
Case 5: Num2Text = "CINCO"
Case 6: Num2Text = "SEIS"
Case 7: Num2Text = "SIETE"
Case 8: Num2Text = "OCHO"
Case 9: Num2Text = "NUEVE"
Case 10: Num2Text = "DIEZ"
Case 11: Num2Text = "ONCE"
Case 12: Num2Text = "DOCE"
Case 13: Num2Text = "TRECE"
Case 14: Num2Text = "CATORCE"
Case 15: Num2Text = "QUINCE"
Case Is < 20: Num2Text = "DIECI" & Num2Text(value - 10)
Case 20: Num2Text = "VEINTE"
Case Is < 30: Num2Text = "VEINTI" & Num2Text(value - 20)
Case 30: Num2Text = "TREINTA"
Case 40: Num2Text = "CUARENTA"
Case 50: Num2Text = "CINCUENTA"
Case 60: Num2Text = "SESENTA"
Case 70: Num2Text = "SETENTA"
Case 80: Num2Text = "OCHENTA"
Case 90: Num2Text = "NOVENTA"
Case Is < 100: Num2Text = Num2Text(Int(value \ 10) * 10) & " Y " & Num2Text(value Mod 10)
Case 100: Num2Text = "CIEN"
Case Is < 200: Num2Text = "CIENTO " & Num2Text(value - 100)
Case 200, 300, 400, 600, 800: Num2Text = Num2Text(Int(value \ 100)) & "CIENTOS"
Case 500: Num2Text = "QUINIENTOS"
Case 700: Num2Text = "SETECIENTOS"
Case 900: Num2Text = "NOVECIENTOS"
Case Is < 1000: Num2Text = Num2Text(Int(value \ 100) * 100) & " " & Num2Text(value Mod 100)
Case 1000: Num2Text = "MIL"
Case Is < 2000: Num2Text = "MIL " & Num2Text(value Mod 1000)
Case Is < 1000000: Num2Text = Num2Text(Int(value \ 1000)) & " MIL"
If value Mod 1000 Then Num2Text = Num2Text & " " & Num2Text(value Mod 1000)
Case 1000000: Num2Text = "UN MILLÓN"
Case Is < 2000000: Num2Text = "UN MILLÓN " & Num2Text(value Mod 1000000)
Case Is < 1000000000000#: Num2Text = Num2Text(Int(value / 1000000)) & " MILLONES "
If (value - Int(value / 1000000) * 1000000) Then Num2Text = Num2Text & " " & Num2Text(value - Int(value / 1000000) * 1000000)
Case 1000000000000#: Num2Text = "UN BILLÓN"
Case Is < 2000000000000#: Num2Text = "UN BILLÓN " & Num2Text(value - Int(value / 1000000000000#) * 1000000000000#)
Case Else: Num2Text = Num2Text(Int(value / 1000000000000#)) & " BILLONES"
If (value - Int(value / 1000000000000#) * 1000000000000#) Then Num2Text = Num2Text & " " & Num2Text(value - Int(value / 1000000000000#) * 1000000000000#)
End Select
End Function

que me hace falta en el código para que me salgan los pesos??

Gracias

1 respuesta

Respuesta
1

Generalmente la palabra pesos, dolares ... etc se coloca en el llamado de la función, es decir supón que tienes el siguiente procedimiento

Sub prueba()
MsgBox Num2Text(100000) & " Pesos mcte."
End Sub

La anterior respuesta es como generalmente se realiza. Sin embargo si quieres colocarlo dentro de la función podrías hacer lo siguiente:

Public Function Num2Text(ByVal value As Double, Optional ByVal Moneda As String = "") As String
Select Case value
Case 0: Num2Text = "CERO"
Case 1: Num2Text = "UN"

'.

'.

'.

If (value - Int(value / 1000000) * 1000000) Then Num2Text = Num2Text & " " & Num2Text(value - Int(value / 1000000) * 1000000)
Case 1000000000000#: Num2Text = "UN BILLÓN"
Case Is < 2000000000000#: Num2Text = "UN BILLÓN " & Num2Text(value - Int(value / 1000000000000#) * 1000000000000#)
Case Else: Num2Text = Num2Text(Int(value / 1000000000000#)) & " BILLONES"
If (value - Int(value / 1000000000000#) * 1000000000000#) Then Num2Text = Num2Text & " " & Num2Text(value - Int(value / 1000000000000#) * 1000000000000#)
End Select
If Moneda <> "" Then
Num2Text = Num2Text & " " & Moneda
End If
End Function

'Para llamarla lo harías asi:

Sub prueba()
MsgBox Num2Text(100000, "PESOS")

MsgBox Num2Text(100000, "BOLIVARES")

MsgBox Num2Text(100000)
End Sub

no entiendo lo ultimo...

me podrías explicar un poco mejor...

'Para llamarla lo harías asi:
Sub prueba()
MsgBox Num2Text(100000, "PESOS")
MsgBox Num2Text(100000, "BOLIVARES")
MsgBox Num2Text(100000)
End Sub

Primero que todo la función que creaste:

Function Num2Text(ByVal value As Double, Optional ByVal Moneda As String = "")

Colocala en un modulo, esto es: En el editor de vba das clic en la barra de herramientas insertar modulo y hay pegas tu función.

Para usarla puedes hacerlo de dos formas:

1. En el modulo que creaste en el paso anterior y donde se encuentra la función pegas a continuación el código que te envíe, es decir:

Sub prueba()
MsgBox Num2Text(100000, "PESOS")
MsgBox Num2Text(100000, "BOLÍVARES")
MsgBox Num2Text(100000)
End Sub

2. Si estas en el entorno de excel ( No en el editor de vba)

Presiona insertar función y en la lista "o seleccionar una categoría" selecciona: "Definidas por el usuario" y aparecerá tu función Num2Text, la cual te pedirá dos parámetros:

El primero un numero y el segundo una palabra que puede ser PESOS, US, etc

Espero te sirva esta aclaración, ya que la función la estructuraste muy bien.

Éxitos,

Juan Carlos

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas