convertir número en texto

24/07/2003 - 18:19 por luisito | Informe spam
por favor alguien podría ayudarme con lo siguiente:
manejo algunas nóminas en excel y tengo que teclear la
cantidad en letras.
Hay alguna forma de que se haga automaticamente al poner
el número ?
 

Leer las respuestas

#1 luisito
30/07/2003 - 20:15 | Informe spam
Hola, lo podrias hacer utilizando una macro, te paso el


codigo que me dieron
ami aqui mismo, gusto de ayudarte.
este es el codigo:
Option Explicit
Global uni(16) As String
Global dece(9) As String
Global cente(9) As String
Function descifrar(NUMERO, Optional MOneda As String


= "PESOS")
Dim r1 As Currency, r2 As Currency, r3 As Currency
Dim Resp As String
Dim numeros_
numeros_ = NUMERO
' Estos arrays estan definidos como globales
uni(0) = ""
uni(1) = "UNO"
uni(2) = "DOS"
uni(3) = "TRES"
uni(4) = "CUATRO"
uni(5) = "CINCO"
uni(6) = "SEIS"
uni(7) = "SIETE"
uni(8) = "OCHO"
uni(9) = "NUEVE"
uni(10) = "DIEZ"
uni(11) = "ONCE"
uni(12) = "DOCE"
uni(13) = "TRECE"
uni(14) = "CATORCE"
uni(15) = "QUINCE"

dece(0) = "DIECI"
dece(1) = "VEINT"
dece(2) = "TREI"
dece(3) = "CUARE"
dece(4) = "CINCUE"
dece(5) = "SESE"
dece(6) = "SETE"
dece(7) = "OCHE"
dece(8) = "NOVE"

cente(0) = "CIEN"
cente(1) = "DOSCI"
cente(2) = "TRESCI"
cente(3) = "CUATROCI"
cente(4) = "QUINI"
cente(5) = "SEISCI"
cente(6) = "SETECI"
cente(7) = "OCHOCI"
cente(8) = "NOVECI"

Resp = ""

If NUMERO < 0 Then ' Si es un número negativo lo paso
NUMERO = NUMERO * -1 ' a positivo para el calculo y la
Resp = "MENOS" ' frase comienza con


el "menos ..."
End If
' Parto el número en tres bloques de tres digitos
r3 = Int((NUMERO / 1000000))
r2 = Int(((NUMERO / 1000) - (r3 * 1000)))
r1 = Int((NUMERO - ((r3 * 1000000) + (r2 * 1000))))

If NUMERO < 1000000000 Then
If r3 <> 0 Then ' Proceso los millones
If r3 <> 1 Then
Resp = Resp + cifra(r3, 3)
Resp = Resp + " MILLONES "
Else
Resp = Resp + "UN MILLON "
End If
End If
If r2 <> 0 Then ' Proceso los millares
If r2 <> 1 Then
Resp = Resp + cifra(r2, 2)
Resp = Resp + " "
End If
Resp = Resp + "MIL "
End If
Resp = Resp + cifra(r1, 1) ' Proceso las centenas
Else
Resp = "¡¡¡Mas de 999.999.999 pesos!!!" ' Nos hemos


pasado ;-)
End If
Dim poputo
Dim centavos_ As String
poputo = InStr(Str(numeros_), ".")
centavos_ = IIf(poputo > 0, Mid$(Str(numeros_), poputo +


1, 2), "00")
centavos_ = IIf(Len(centavos_) < 2, centavos_ + "0",


centavos_)
Resp = "*** Son " & Resp & " " & MOneda & " con " &


centavos_ & "/100 ****"
descifrar = Resp
End Function

Function cifra(m As Currency, Nivel As Integer) As String
Dim n3 As Currency, n2 As Currency, n1 As Currency, N As


Currency
Dim Resp As String
Resp = ""
n3 = Int((m / 100))
n2 = Int((Int(m / 10) Mod 10))
n1 = Int((m Mod 10))

If n3 <> 0 Then 'Comprobamos la centena
Resp = Resp + cente(n3 - 1)
If n3 < 2 Then
If m <> 100 Then Resp = Resp + "TO "
ElseIf Nivel = 3 Then ' el nivel nos indica el sexo de


las pesetas :)
Resp = Resp + "ENTOS "
Else
Resp = Resp + "ENTOS "
End If
End If

N = ((n2 * 10) + n1)

If N <> 0 Then
If N < 16 Then ' para los inferiores a 16
Resp = Resp + uni(N) ' son las unidades a capon
Else
Resp = Resp + dece(n2 - 1)
If n2 < 3 Then 'decenas de menos de 30
If n2 > 1 Then
If n1 <> 0 Then
Resp = Resp + "I"
Else
Resp = Resp + "E"
End If
End If
Else
Resp = Resp + "NTA" ' las demás decenas acaban


en NTA :)
If n1 <> 0 Then Resp = Resp + " Y "
End If
Resp = Resp + uni(n1) ' le pongo las unidades
End If
End If
cifra = Resp
End Function




"luisito" escribió en el


mensaje
news:0c7501c351ff$607952e0$
por favor alguien podría ayudarme con lo siguiente:
manejo algunas nóminas en excel y tengo que teclear la
cantidad en letras.
Hay alguna forma de que se haga automaticamente al poner
el número ?


.
gracias por tu ayuda, fue muy valiosa


ya salen bien los procedimietos
seguimos en contacto

Preguntas similares