Convertir Numeros a Letras Microsoft Excel 2007

Que tal amigos, el dia de hoy quiero publicar una función para microsoft Excel que esta enfocada a llenar facturas o para contadores principalmente se trata de una macros que nos permitirá convertir los números a letras

Ejemplo de 250 a Son: (DOS CIENTOS CINCUENTA PESOS 00/100 M.N.)

En MS Excel no existe ninguna función predefinida que nos permita realizar esta tarea es por eso que nos auxiliaremos de una Macros para poder hacer comencemos:

Paso 1:
Lo primero que debemos de hacer será crear la macros que utilizaremos para ello seleccionaremos la pestaña vista y a continuación en el botón macros o bien con la combinación de teclas “Alt + F8” lo que nos desplegará la ventana emergente “Macro”:

vermacros2

En la barra de texto “Nombre de la Macro” escribiremos el nombre que tendra esta macro, yo utilice PesosMN ya que es la misma función a la que se hace referencia en la programación, una vez hecho esto damos  clic al botón crear o bien “Enter”

Paso 2:

Una vez hecho lo  anterior se abrira una venta de Visual Basic en la que vamos a borrar lo que tiene la ventana y a pegar el siguiente codigo:

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

visual

una vez que haya finalizado de agregar el codigo puede cerrar la venta del de editor de visual basic, y probar la función directamente en la hoja de excel.

Paso 3:

Despues del paso anterior podemos llamar a nuestra funcion desde la hoja de excel para llamarla lo haremos igual que llamamos cualquier otra función “=PesosMN(Celda)” el resultado es el siguiente:

final

Como ultima anotación esta macro se guardará en el libro en el que hayamos trabajado por lo que les recomiendo crear un formato por ejemplo para llenado de facturas o para cualquier aplicación que ustedes necesiten.

Espero que este Post les sea de utilidad. XD

6 Comentarios en “Convertir Numeros a Letras Microsoft Excel 2007

  1. Gracias Amigo Por el Aporte, no quedaba el Macro porque a la hora de copiar solo se copio los “” de forma diferente al que deberia ser pero ya esta corregido gracias.

  2. Hola nuevamente, recibí tu aviso de modificación de la macro, gracias.

    En mi caso (como lo mencionas en tu comentario) revisé y sustituí todas las comillas, al notar que las líneas se mostraban en rojo verifiqué la función y reescribí algunos caracteres, eso bastó para que funcionara.

    Gracias por la secuencia.

Comentarios cerrados.