Ir al contenido principal

Convertir números a letras

Te muestro como crear tu propia función para convertir números a letras, esto puede serte de mucha utilidad si usas Excel para imprimir  reportes en los que debas ingresar un numero en letras.
Primero ingresa a VBA presionando las teclas Alt+F11, e inserta un Modulo (Si ya tienes un modulo no necesitas insertar uno nuevo)

Insertar un modulo de codigo en VBA 
Ahora selecciona tu modulo (Module1)
Ventana de codigo para agregar la funcion
Y en la ventana derecha ingresa este texto:

Function NumLetras(Valor As Currency, Optional MonedaSingular As String = "", Optional MonedaPlural As String = "") 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
Dim ValorEntero As Long
    Valor = Round(Valor, 2)
    lyCantidad = Int(Valor)
    ValorEntero = lyCantidad
    lyCentavos = (Valor - 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
                NumLetras = lcBloque
            Case 2
                NumLetras = lcBloque & IIf(lnBloqueCero = 3, Null, " MIL") & NumLetras
            Case 3
                NumLetras = lcBloque & IIf(lnPrimerDigito = 1 And lnSegundoDigito = 0 And lnTercerDigito = 0, " MILLON", " MILLONES") & NumLetras
        End Select
        lnNumeroBloques = lnNumeroBloques + 1
    Loop Until lyCantidad = 0
    NumLetras = NumLetras & " " & Format(Str(lyCentavos), "00") & "/100 " & IIf(ValorEntero = 1, MonedaSingular, MonedaPlural)
End Function

Y guarda los cambios presionando Ctrl+S o con el boton de Guardar en la barra de herramientas.

Como usar la función para convertir los números a letras?
Digamos que nuestros importes inicia apartir de la celda A1 y en la columna B1 aplico la siguiente formula:
=NOMPROPIO(NumLetras(A1,"Peso","Pesos"))
 y tendremos este resultado:


Puedes descargar el archivo - Convertir número a letras utilizado en este artículo y reutilizar las funciones.







Comentarios

Entradas más populares de este blog

ATAJOS DEL TECLADO

Prácticamente todas las herramientas y acciones de Excel se pueden ejecutar desde el teclado. Eso te da mucha más velocidad a la hora de manejar Excel y aumenta tu productividad en tu trabajo diario. Tenemos preparada esta impresionante lista de atajos del teclado, seguro que encontrás muchos que no conocías! TECLAS PARA TRABAJAR EN UNA HOJA DE CALCULOS  Teclas para moverse y desplazarse por una hoja de cálculo o un libro Teclas de dirección Moverse una celda hacia arriba, hacia abajo, hacia la izquierda o hacia la derecha CTRL+ tecla de dirección Ir hasta el extremo de la región de datos actual INICIO Ir hasta el comienzo de una fila CTRL+INICIO Ir hasta el comienzo de una hoja de cálculo CTRL+FIN Ir a la última celda de la hoja de cálculo, que es la celda ubicada en la intersección de la columna situada más a la derecha y la fila ubicada más abajo (en la esquina inferior derecha) o la celda opuesta a la celda inicial, que es normalmente la celda A1 AV PÁG ...

Una forma para crear copia de una hoja

Con Excel es posible crear una copia de la hoja activa. Es muy fácil: Con el cursor del ratón, seleccione la hoja que quiere copiar y presione simultáneamente la tecla CTRL y arrástrelo hasta el lugar donde quiere copiarla. Mantenga la tecla CTRL y el cursor del ratón presionados al mismo tiempo.

Macro Para Dividir texto en celdas diferentes

Has tu pedido por el correo electronico   solucionesmsexcelvba@gmail.com ¡Yo Te lo diseño de acuerdo a tus necesidades! "Muchas personas en su trabajo diario realizan tareas repetitivas frente a sus hojas Excel, desperdiciando días enteros en realizar informes de manera manual los cuales, con un simple clic a un botón en cuestión de segundos estaría realizado".

Mostrar hojas ocultas en un libro de Excel

¿Alguna vez has intentando mostrar todas las hojas ocultas en un libro de Excel? si tu respuesta fue Si, entonces ya te diste cuenta de que no hay una opción. para poder solucionar este detalle tenemos que utilizar el siguiente código. Alt+F11 insertamos un módulo y pegamos este código: Sub mostrar_hojas_ocultas_() Dim hojas As Byte hojas = Sheets.Count For i = 1 To hojas Sheets(i).Visible = True Next End Sub Y con esto solucionamos en segundos.

Funcion (NOMPROPIO,MAYUSC,MINUSC)

Existen algunas funciones en Excel que te ayudarán a aplicar formato de mayúsculas ó minúsculas a textos de manera fácil y rápida. Revisaremos estas funciones con un ejemplo sencillo. En la celda A1 colocaré el valor “excel total”: Primera letra en mayúscula Ahora haré uso de la función NOMPROPIO para colocar la primera letra de cada palabra en mayúscula. La fórmula queda de la siguiente manera: =NOMPROPIO(A1) El resultado al aplicar esta fórmula en la celda B1 es el siguiente: Convertir a mayúsculas Para transformar todas las letras en mayúsculas de la celda B1 y utilizaré la función MAYUSC aplicando la siguiente fórmula: =MAYUSC(B1) Con esta fórmula, la celda C1 tendrá el siguiente resultado: Convertir a minúsculas Finalmente haré uso de la función MINUSC para convertir de nuevo todas las letras en minúsculas. La fórmula a utilizar será la siguiente: =MINUSC(C1) Este es el resultado final:

Pasos a seguir para permitir que las macros de VBA se ejecuten en archivos

Las macros de internet se bloquearán de forma predeterminada en Office. Las macros de VBA son una forma común en que los actores malintencionados obtienen acceso para implementar malware y ransomware. Por tanto, para ayudar a mejorar la seguridad en Office, se ha cambiado el comportamiento predeterminado de las aplicaciones de Office para bloquear macros en archivos de Internet. Con este cambio, cuando los usuarios abren un archivo que procede de Internet (por ejemplo, datos adjuntos de correo electrónico) y ese archivo contiene macros, se muestra el siguiente mensaje:  Para que funcione las macros, hay que seguir estos pasos: Click de derecho al Archivo y propiedades:    y te aparecerá esta ventana, le activas el check para desbloquear, Aceptar y listo :   Importante: Realizar este proceso solamente si conoces el origen del archivo, no nos hacemos responsable si en algún momento sufre algún daño tu equipo.

Controlar base de datos de proveedores.

Has tu pedido por el correo electronico   solucionesmsexcelvba@gmail.com ¡Yo Te lo diseño de acuerdo a tus necesidades!

Concatenar textos en un solo textbox

Como su mismo nombre lo dice, es un código que concatena varios textbox en un solo textbox. espero les sirva de algo       Descargar Archivo

Sumar en Excel según el color de la celda

Desafortunadamente Excel no tiene una formula o una función que realice esta tarea, por lo que tendremos que construir una función personalizada. Para sumar por el color de relleno de una celda será necesario evaluar la propiedad Interior.Color y todas las celdas que tengan el mismo valor deberán ser sumadas. El código de nuestra función será el siguiente: Function Sumarcolor(Celdacolor As Range, Rangosuma As Range) As Double     Dim celda As Range     For Each celda In Rangosuma         If celda.Interior.ColorIndex = Celdacolor.Cells(1, 1).Interior.ColorIndex Then Sumarcolor = Sumarcolor + celda     Next celda     Set celda = Nothing End Function Cada vez que encontramos una coincidencia en el valor de la propiedad Interior.Color la variable resultado hace la suma del valor de la celda y así obtenemos la suma total. Observa el comportamiento de esta función: ...

Asignar nombres a celdas o rangos

Asignar un nombre a un rango de celdas Estos nombres se pueden utilizar dentro de una fórmula para ayudar en la compresión de la misma posteriormente. Para asignar  un nombre a una celda sigue los siguientes pasos. Selecciona la celda o rango a la que asignarás un nombre y haz clic en el cuadro Nombre que se encuentra en el extremo izquierdo de la barra de fórmulas: Escribe el nombre que deseas y presiona Entrar. Otra manera de crear un nombre para un rango es desde la ficha Fórmulas y el botón Asignar nombre . Una vez que hayas seleccionado el rango de celdas oprime este botón y se mostrará el cuadro de diálogo Nombre nuevo : En la caja de texto Nombre coloca el nombre que asignarás a la celda o rango y oprime el botón Aceptar. Utilizar un nombre en una fórmula Como ejemplo final utilizaré el nombre que acabamos de crear dentro de una fórmula para que observes cómo Excel interpreta correctamente el nuevo nombre del rango, observa la barra de fórmul...