Macro para Convertir números a letras en Excel

Anuncio
Macro para Convertir números a letras en Excel
Código a pegar
Function PesosMN(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
Dim laUnidades As Variant, laDecenas As Variant, laCentenas As Variant, I As Variant 'Si esta
como Option Explicit
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
PesosMN = lcBloque
Case 2
PesosMN = lcBloque & IIf(lnBloqueCero = 3, Null, " MIL") & PesosMN
Case 3
PesosMN = lcBloque & IIf(lnPrimerDigito = 1 And lnSegundoDigito = 0 And lnTercerDigito =
0, " MILLON", " MILLONES") & PesosMN
End Select
lnNumeroBloques = lnNumeroBloques + 1
Loop Until lyCantidad = 0
PesosMN = "SON: (" & PesosMN & IIf(tyCantidad > 1, " PESOS ", " PESO ") &
Format(Str(lyCentavos), "00") & "/100 M.N.)"
End Function
Bien, ahora que ya tenemos el código vamos a insertarlo en nuestra hoja de trabajo de Microsoft
Excel. Recomendable trabajar en un libro nuevo.
Hacemos clic en Herramientas->Macros->Editor de Visual Basic, o simplemente presionando
Alt+F11
Es importante que cierres todos los libros que tengas abierto y dejes abierto solo el libro en el que
estas trabajando ya que podría dificultarte encontrar tu libro en el explorador de proyectos (lado
izquierdo de tu pantalla, si no lo ves presiona Ctrl+R)
Una vez abierto el editor de Visual Basic nos vamos a Insertar->Modulo
En la ventana que se abre pegamos el codigo de la macro
Listo, ya tenemos nuestro macro listo para trabajar, cerramos el editor de Visual Basic, lo puedes
hacer con Alt+Q y regresamos a Microsoft Excel
Vamos a probarlo, en la celda A1 ponemos un importe, yo pondré 1500.21, abajo, en la celda A2
ponemos =PesosMN(A1)
Descargar