AYUDA!! Covertir un numero a una cadena alfanumerica

Aitor
03 de Agosto del 2004
Buenas a todos, necesito crear una función que convierta un numero a su literal, por ejemplo:
131,11 --> Ciento treinta y uno coma once ó
Ciento treinta y uno con once
Si alguien puede ayudarme se lo agradecería.
Muchas gracias.

krizall
03 de Agosto del 2004
hola, por aqui hay un mensaje para convertir un numero a su literal
buscalo, si no tienes suerte vi un ejemplo de eso en la siguiente direccion:
www.elguruprogramador.com.ar

noelia
03 de Agosto del 2004
Yo tengo esta funcion:



Public Sub LETRAS_EUROS()
Dim BP1(20), BP2(20), MIMPOR, NN, Y, DECIMAS As String
Dim LO, CRT1, SIT, D, z, i, x, r, SEC, n(12), NDEC As Double
Dim SWDE As Boolean
On Error Resume Next
BP1(1) = "UN"
BP1(2) = "DOS"
BP1(3) = "TRES"
BP1(4) = "CUATRO"
BP1(5) = "CINCO"
BP1(6) = "SEIS"
BP1(7) = "SIETE"
BP1(8) = "OCHO"
BP1(9) = "NUEVE"
BP1(10) = "DIEZ"
BP1(11) = "DIEZ"
BP1(12) = "VEINTE"
BP1(13) = "TREINTA"
BP1(14) = "CUARENTA"
BP1(15) = "CINCUENTA"
BP1(16) = "SESENTA"
BP1(17) = "SETENTA"
BP1(18) = "OCHENTA"
BP1(19) = "NOVENTA"
BP2(1) = "ONCE"
BP2(2) = "DOCE"
BP2(3) = "TRECE"
BP2(4) = "CATORCE"
BP2(5) = "QUINCE"
res = ""
resu1 = ""
resu2 = ""
GoSub LETRAS1
LO = Len(res)
If Left$(res, 6) = "UN MIL" Then
LO = LO - 6
res = "MIL" & Mid$(res, 7, LO)
End If
If Left$(res, 7) = "UNA MIL" Then
LO = LO - 7
res = "MIL" & Mid$(res, 8, LO)
End If
LO = Len(res)
If LO <= 55 Then
resu1 = res & " ---"
resu2 = String$(55, "-")
Exit Sub
Else
resu1 = Left$(res, 55) & " ---"
resu2 = Right$(res, LO - 55) & " ---"
Exit Sub
End If

LETRAS1:
MIMPOR = Str$(letimpor)
MIMPOR = Trim(MIMPOR)
SIT = Len(Trim(MIMPOR))
NDEC = 0
SWDE = False
For x = SIT To 1 Step -1
NDEC = NDEC + 1
If Mid$(MIMPOR, x, 1) = "." Then
SWDE = True
Exit For
End If
Next x
Select Case NDEC
Case 2
DECIMAS = Right$(MIMPOR, 1) & "0"
MIMPOR = Left$(MIMPOR, (SIT - NDEC))
SIT = SIT - NDEC
Case Else
If SWDE = True Then
DECIMAS = Right$(MIMPOR, 2)
MIMPOR = Left$(MIMPOR, (SIT - NDEC))
SIT = SIT - NDEC
Else
DECIMAS = ""
MIMPOR = Left$(MIMPOR, SIT)
End If
End Select
If SIT > 12 Or SIT = 0 Then
Return
End If
res = ""
D = 0
z = 0
For i = 1 To SIT
n(i) = Val(Mid$(MIMPOR, i, 1))
Next i
For x = 1 To SIT
r = (SIT - x) - 3 * (Int((SIT - x) / 3)) + 1
SEC = Int((SIT - x) / 3) + 1
On r GoSub LT1, LT2, LT3
Next x
res = res + " EUROS "
' TRANSFORMA LOS DECIMALES
SIT = Len(DECIMAS)
If SIT > 2 Or SIT = 0 Then
Return
End If
res = res + "CON "
For i = 1 To SIT
n(i) = Val(Mid$(DECIMAS, i, 1))
Next i
For x = 1 To SIT
r = (SIT - x) - 3 * (Int((SIT - x) / 3)) + 1
SEC = Int((SIT - x) / 3) + 1
On r GoSub LT1, LT2, LT3
Next x
res = res & " Cts."
Return

LT1:
If n(x) = 0 And z = 0 And SEC <> 3 Then
Return
End If
If n(x) = 0 Then
GoTo LT11
End If
If D = 1 Then
GoTo LT12
End If
If n(x) = 1 And (SEC = 1 Or SEC = 2) Then
res = res + "UN"
GoTo LT11
End If
If n(x) = 1 And (x = SIT - 3 Or x = SIT - 9) And z = 0 Then
GoTo LT11
End If
res = res + BP1(n(x))

LT11:
On SEC GoTo LT111, LT112, LT113, LT112

LT111:
z = 0
Return

LT112:
If res = "UN" Then
res = "MIL "
Else
res = res + " MIL "
End If
If SEC = 4 Then
z = 0
End If
Return

LT113:
If SIT > 7 Or n(SIT - 6) > 1 Then
res = res + " MILLONES "
Else
res = res + " MILLON "
End If
z = 0
Return

LT12:
On Int((n(x) - 1) / 5) + 1 GoTo LT121, LT122

LT121:
res = res + BP2(n(x))
GoTo LT11

LT122:
res = res + "DIECI" + BP1(n(x))
GoTo LT11

LT2:
D = 0
If n(x) = 0 Then
Return
End If
z = z + 1
If n(x + 1) = 0 Then
res = res + BP1(n(x) + 10)
Return
End If
If n(x) = 1 Then
D = 1
Return
End If
If n(x) = 2 Then
res = res + "VEINTI"
Return
End If
res = res + BP1(n(x) + 10) + " Y "
Return

LT3:
If n(x) = 0 Then
Return
End If
z = z + 1
If SEC = 3 Or SEC = 4 Then
Y = "O"
Else
Y = "A"
End If
If n(x) > 1 And n(x) <> 5 And n(x) <> 7 And n(x) <> 9 Then
res = res + BP1(n(x)) + "CIENTOS "
Return
End If
If n(x) = 5 Then
res = res + "QUINIENTOS "
Return
End If
If n(x) = 7 Then
res = res + "SETECIENTOS "
Return
End If
If n(x) = 9 Then
res = res + "NOVECIENTOS "
Return
End If
If n(x + 1) = 0 And n(x + 2) = 0 Then
res = res + "CIEN "
Return
End If
res = res + "CIENTO "
Return
End Sub

necesitas tener una variable letimpor donde tienes la cantidad y otras dos de tipo cadna resu1 y resu2 donde devuelve la cantidad en letra estas variables deben ser publicas . Espero que te sirva

Walter
03 de Agosto del 2004
Hola Noelia me podrias enviar un ejemplo de como llamar al procedimiento.............