arelygzz@hotmail.com

15/10/2005 - 18:03 por ARELY GONZALEZ | Informe spam
hola chicos lo que pasa es que estoy en una bronk de neuronas, pues quiero
pasar cantidad a texto es decir 1,200 ( UN MIL DOSCIENTOS PESOS 00/100 M. N.
), Pero estoy viendo algunas respuestas que les dan a las personas con las
mismas dudas, sólo please informenme la formula, nada de guille ni nada de
eso ya que mi MAC esta sensurada a download pues por seguridad de la empresa
y por lógica que aunque baje este para intergarlo a máquina me pide el
password y este no tengo. sólo diganme que poner en la celda
=$%/(&/))(())/$·· sin espacios ni nada para solo copiar y pegar.

agradezco sus finas atenciones y su pronta respuesta, a porcierto la version
que tengo de excel es
EXCEL FOR MAC Version 11.1 (no se si esto tenga que ver en que se tarden en
mi auxilio) ciao
 

Leer las respuestas

#1 Hernandez, Roberto
15/10/2005 - 21:11 | Informe spam
Hola Arely!!!

El código que anexo se tiene que pegar en un módulo de VBA (Alt+F11). Una
vez que hayas abierto el editor de VBA inserta un nuevo módulo , copia lo
que está entre los asteriscos y pégalo en el nuevo módulo.

Una vez hecho esto, sólo tendrás que escribir en cualquier celda de tu libro
de Excel, la función =LETRA(A1), en donde A! es la celda en donde tienes la
cantidad con número.

Dos noticias malas. No sé si funcione en Excel para Mac...
Está hecha para pesos mexicanos...

Si te interesa (y te funciona), tengo una versión en dollars y una en Reais
(para Brasil)..

Ciao


'***************************************************************************************
Option Explicit


' Funcion principal


Function LETRA(ByVal MyNumber)
Dim Pesos, Cents, Temp, Number
Dim DecimalPlace, Count

ReDim Place(9) As String 'Crea una matriz
Place(2) = " MIL "
Place(3) = " MILLONES "
Place(4) = " MIL "


' Convierte la cantidad a una cadena
MyNumber = Trim(Str(MyNumber))
Number = MyNumber

' Posicion del punto decimal o cero si no existe
DecimalPlace = InStr(MyNumber, ".")
' Convierte centavos y asigna a MyNumber cantidad en pesos.
If (DecimalPlace > 0) Then
If Mid(Right(MyNumber, 2), 1, 1) <> "." Then
Cents = Trim(Right(MyNumber, 2)) 'Si tiene dos decimales
Else
Cents = Trim(Right(MyNumber, 1)) & "0" 'Si tiene un decimal
End If
MyNumber = Trim(Left(MyNumber, DecimalPlace - 1)) 'Captura los
enteros
End If

Count = 1
Do While MyNumber <> ""
Temp = GetHundreds(Right(MyNumber, 3))
If (Temp <> "") And (Left(MyNumber, 1) <> 0) Then Pesos = Temp
& Place(Count) & Pesos 'Asigna miles o millones
If (Mid(Pesos, 1, 11) = "UN MILLONES") And (Left(Number, 1)
= 1) And (Count = 3) Then Pesos = "UN MILLÓN" & Mid(Pesos, 12, (Len(Pesos) -
11))
If Len(MyNumber) > 3 Then
MyNumber = Left(MyNumber, Len(MyNumber) - 3) 'Extrae
tercias de numeros
Else
MyNumber = ""
End If
Count = Count + 1 'Incrementa el contador
Loop

Select Case Pesos 'Selecciona la terminacion de pesos
Case "": Pesos = "CERO PESOS"
Case "UN": Pesos = "UN PESO"
Case "UN MILLÓN ": Pesos = Pesos & "DE PESOS "
Case "DOS MILLONES ": Pesos = Pesos & "DE PESOS "
Case "TRES MILLONES ": Pesos = Pesos & "DE PESOS "
Case "CUATRO MILLONES ": Pesos = Pesos & "DE PESOS "
Case "CINCO MILLONES ": Pesos = Pesos & "DE PESOS "
Case "SEIS MILLONES ": Pesos = Pesos & "DE PESOS "
Case "SIETE MILLONES ": Pesos = Pesos & "DE PESOS "
Case "OCHO MILLONES ": Pesos = Pesos & "DE PESOS "
Case "NUEVE MILLONES ": Pesos = Pesos & "DE PESOS "
Case "DIEZ MILLONES ": Pesos = Pesos & "DE PESOS "
Case Else
Pesos = Pesos & " PESOS"

End Select

Select Case Cents 'Selecciona la terminacion de centavos
Case ""
Cents = " 00/100 M.N."
Case "UN"
Cents = " 01/100 M.N."
Case Else
Cents = " " & Cents & "/100 M.N."
End Select
LETRA = "(" & Pesos & Cents & ")"
End Function


' Convierte un numero entre 100 y 999 a texto.


Function GetHundreds(ByVal MyNumber)
Dim Result As String

If Val(MyNumber) = 0 Then Exit Function
MyNumber = Right("000" & MyNumber, 3)

' Convierte los cientos.
If (Mid(MyNumber, 1, 1) <> "0") And (Mid(MyNumber, 1, 1) <> "1")
And (Mid(MyNumber, 1, 1) <> "5") And (Mid(MyNumber, 1, 1) <> "7") And
(Mid(MyNumber, 1, 1) <> "9") Then
Result = GetDigit(Mid(MyNumber, 1, 1)) & "CIENTOS "
Else
If (Mid(MyNumber, 1, 1) = "1") And (Mid(MyNumber, 2, 1) = "0")
And (Mid(MyNumber, 3, 1) = "0") Then
Result = "CIEN "
Else
If (Mid(MyNumber, 1, 1) <> "0") Then
Result = "CIENTO "
End If
End If
Select Case Val(Mid(MyNumber, 1, 1))
Case 5: Result = "QUINIENTOS "
Case 7: Result = "SETECIENTOS "
Case 9: Result = "NOVECIENTOS "
Case Else
End Select
End If

' Convierte decenas y unidades.
If Mid(MyNumber, 2, 1) <> "0" Then
Result = Result & GetTens(Mid(MyNumber, 2))
Else
Result = Result & GetDigit(Mid(MyNumber, 3))
End If

GetHundreds = Result
End Function


' Convierte un numero entre 10 y 99 en texto.


Function GetTens(TensText)
Dim Result As String

Result = "" ' Anula el valor temporal de la función.
If Val(Left(TensText, 1)) = 1 Then ' Si el valor esta entre 10 y
19...
Select Case Val(TensText)
Case 10: Result = "DIEZ"
Case 11: Result = "ONCE"
Case 12: Result = "DOCE"
Case 13: Result = "TRECE"
Case 14: Result = "CATORCE"
Case 15: Result = "QUINCE"
Case 16: Result = "DIECISÉIS"
Case 17: Result = "DIECISIETE"
Case 18: Result = "DIECIOCHO"
Case 19: Result = "DIECINUEVE"
Case Else
End Select
Else ' Si el valor está entre 20 y
99...
Select Case Val(Left(TensText, 1))
Case 2:
If Val(Mid(TensText, 2, 1)) = "0" Then
Result = "VEINTE"
Else
Result = "VEINTI"
End If
Case 3: Result = "TREINTA"
Case 4: Result = "CUARENTA"
Case 5: Result = "CINCUENTA"
Case 6: Result = "SESENTA"
Case 7: Result = "SETENTA"
Case 8: Result = "OCHENTA"
Case 9: Result = "NOVENTA"
Case Else
End Select
If (Val(Mid(TensText, 2, 1)) = "0") Or (Val(Mid(TensText, 1,
1)) = "2") Then
Result = Result & GetDigit _
(Right(TensText, 1))
If Result = "VEINTIUN" Then
Result = "VEINTIÚN"
End If
If Result = "VEINTIDOS" Then
Result = "VEINTIDÓS"
End If
If Result = "VEINTITRES" Then
Result = "VEINTITRÉS"
End If
If Result = "VEINTISEIS" Then
Result = "VEINTISÉIS"
End If
Else
Result = Result & " Y " & GetDigit _
(Right(TensText, 1))
End If
End If
GetTens = Result
End Function


' Convierte un numero entre 1 y 99 a texto


Function GetDigit(Digit)
Select Case Val(Digit)
Case 1: GetDigit = "UN"
Case 2: GetDigit = "DOS"
Case 3: GetDigit = "TRES"
Case 4: GetDigit = "CUATRO"
Case 5: GetDigit = "CINCO"
Case 6: GetDigit = "SEIS"
Case 7: GetDigit = "SIETE"
Case 8: GetDigit = "OCHO"
Case 9: GetDigit = "NUEVE"
Case Else: GetDigit = ""
End Select
End Function

'***********************************************************************************
"ARELY GONZALEZ" <ARELY escribió en el
mensaje news:
hola chicos lo que pasa es que estoy en una bronk de neuronas, pues quiero
pasar cantidad a texto es decir 1,200 ( UN MIL DOSCIENTOS PESOS 00/100 M.
N.
), Pero estoy viendo algunas respuestas que les dan a las personas con las
mismas dudas, sólo please informenme la formula, nada de guille ni nada de
eso ya que mi MAC esta sensurada a download pues por seguridad de la
empresa
y por lógica que aunque baje este para intergarlo a máquina me pide el
password y este no tengo. sólo diganme que poner en la celda
=$%/(&/))(())/$·· sin espacios ni nada para solo copiar y pegar.

agradezco sus finas atenciones y su pronta respuesta, a porcierto la
version
que tengo de excel es
EXCEL FOR MAC Version 11.1 (no se si esto tenga que ver en que se tarden
en
mi auxilio) ciao

Preguntas similares