En excel presionas Alt + F11 para que te aparezca el editor de visual basic.
En el editor de visual basic haces click en el menu "Insertar" y seleccionas modulo. Esto te va a abrir una nueva ventana dentro del editor.
Dentro de esta venta pegas el texto que te agrego al final de la respuesta.
Cierras el editor de visual basic.
Con esto ya solo deberas escribir en la celda que quieres la cantidad con letra:
CantidadConLetra(Celda en numero)
Por ejemplo: CantidadConLetra(B5).
Un detalle mas, para que esto funcione correctamente, debes de habilitar el uso de macros cada vez que abras el archivo.
Texto a pegar en el editor de Visual Basic:
Function CantidadConLetra(tyCantidad As Currency) As String
Dim lyCantidad As Currency, lyCentavos As Currency, lnDigito As Byte, lnPrimerDigito As Byte, lnSegundoDigito As Byte, lnTercerDigito As Byte, lcBloque As String, lnNumeroBloques As Byte, lnBloqueCero
tyCantidad = Round(tyCantidad, 2)
lyCantidad = Int(tyCantidad)
lyCentavos = (tyCantidad - lyCantidad) * 100
laUnidades = Array("UN", "DOS", "TRES", "CUATRO", "CINCO", "SEIS", "SIETE", "OCHO", "NUEVE", "DIEZ", "ONCE", "DOCE", "TRECE", "CATORCE", "QUINCE", "DIECISEIS", "DIECISIETE", "DIECIOCHO", "DIECINUEVE", "VEINTE", "VEINTIUN", "VEINTIDOS", "VEINTITRES", "VEINTICUATRO", "VEINTICINCO", "VEINTISEIS", "VEINTISIETE", "VEINTIOCHO", "VEINTINUEVE")
laDecenas = Array("DIEZ", "VEINTE", "TREINTA", "CUARENTA", "CINCUENTA", "SESENTA", "SETENTA", "OCHENTA", "NOVENTA")
laCentenas = Array("CIENTO", "DOSCIENTOS", "TRESCIENTOS", "CUATROCIENTOS", "QUINIENTOS", "SEISCIENTOS", "SETECIENTOS", "OCHOCIENTOS", "NOVECIENTOS")
lnNumeroBloques = 1
Do
lnPrimerDigito = 0
lnSegundoDigito = 0
lnTercerDigito = 0
lcBloque = ""
lnBloqueCero = 0
For i = 1 To 3
lnDigito = lyCantidad Mod 10
If lnDigito <> 0 Then
Select Case i
Case 1
lcBloque = " " & laUnidades(lnDigito - 1)
lnPrimerDigito = lnDigito
Case 2
If lnDigito <= 2 Then
lcBloque = " " & laUnidades((lnDigito * 10) + lnPrimerDigito - 1)
Else
lcBloque = " " & laDecenas(lnDigito - 1) & IIf(lnPrimerDigito <> 0, " Y", Null) & lcBloque
End If
lnSegundoDigito = lnDigito
Case 3
lcBloque = " " & IIf(lnDigito = 1 And lnPrimerDigito = 0 And lnSegundoDigito = 0, "CIEN", laCentenas(lnDigito - 1)) & lcBloque
lnTercerDigito = lnDigito
End Select
Else
lnBloqueCero = lnBloqueCero + 1
End If
lyCantidad = Int(lyCantidad / 10)
If lyCantidad = 0 Then
Exit For
End If
Next i
Select Case lnNumeroBloques
Case 1
CantidadConLetra = lcBloque
Case 2
CantidadConLetra = lcBloque & IIf(lnBloqueCero = 3, Null, " MIL") & CantidadConLetra
Case 3
CantidadConLetra = lcBloque & IIf(lnPrimerDigito = 1 And lnSegundoDigito = 0 And lnTercerDigito = 0, " MILLON", " MILLONES") & CantidadConLetra
End Select
lnNumeroBloques = lnNumeroBloques + 1
Loop Until lyCantidad = 0
CantidadConLetra = "(SON " & CantidadConLetra & IIf(tyCantidad > 1, " PESOS ", " PESOS ") & Format(Str(lyCentavos), "00") & "/100 M.N. )"
End Function
2006-12-19 05:41:41
·
answer #1
·
answered by K Guy 4
·
1⤊
0⤋
es algo complicado, no digo imposible pero excel no es exactamente para este tipo de usos. Te recomiedno comprarte un programa o de finanzas (peach tree, quick books, money, etc) o a travez de programas como Visual Basic puedas programar esto que deseas, ahi es super que facil.
2006-12-19 13:41:45
·
answer #4
·
answered by TRIPAS 2
·
0⤊
0⤋