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

Lista para validación de datos en Excel

Cuando compartes tus libros de Excel con otras personas y ellos introducen información en las hojas que has preparado con tanto esfuerzo, es de suma importancia validar los datos de manera que puedas prevenir cualquier error con las fórmulas o alguna interpretación equivocada al momento de realizar un análisis de la información. Afortunadamente Excel tiene herramientas de validación de datos que nos permitirán validar la información al momento que es introducida en una celda. Este grupo de comandos se encuentra en la ficha Datos y dentro del grupo Herramientas de datos . En esta ocasión centraremos nuestra atención en una de las opciones de la Validación de datos que es conocida como la lista de validación de datos y que convierte una celda común en una lista de opciones de las cuales el usuario podrá elegir alguna. Beneficios de la lista de validación Antes de explicar la creación y uso de las listas de validación de datos, me gustaría dar un ejemplo de los beneficio...

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!

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.

Función CUENTACOLOR para contar celdas con colores.

Este archivo contiene la función personalizada CUENTACOLOR y sirve para contar celdas que contengan un determinado color de un reporte. CODIGO: Function CUENTACOLOR(RangoColor As Range, CeldaColor As Range) As Long '''''Soluciones MS Excel VBA''''''' Dim rngCelda As Range CUENTA = 0 For Each Celda In RangoColor If Celda.Interior.ColorIndex = CeldaColor.Interior.ColorIndex And IsNumeric(Celda) Then CUENTA = CUENTA + 1 End If Next CUENTACOLOR = CUENTA End Function Puedes descargar el libro de trabajo utilizado en este artículo y reutilizar las funciones

Mapa de Riesgo en VBA

Un mapa de riesgos es una herramienta que se utiliza para predecir y anticipar los riesgos que podemos correr, y así poder evitarlos dentro de una organización. Si estas interesado en esta herramienta, escríbeme por correo electrónico solucionesmsexcelvba@gmail.com o me puedes seguir en mi página de Facebook  Soluciones Microsoft Excel Visual Basic y con gusto te atenderemos.  

Ejemplos de formato condicional en Excel 2013

En esta ocasión realizaremos algunos ejemplos de formato condicional en Excel 2013 para dejar en claro el potencial y ventajas de uso que nos ofrece esta funcionalidad al momento de analizar nuestros datos. Formato condicional en números Cuando los datos de nuestras celdas son valores numéricos, Excel provee de varias opciones para aplicar un formato condicional rápidamente. Las primeras alternativas que analizaremos serán las que se encuentran en Inicio > Estilos > Formato condicional > Resaltar reglas de celdas. Sabiendo que nuestros datos son valores numéricos, podemos utilizar las siguientes opciones: Es mayor que : Se aplicará el formato a todas las celdas con un valor mayor al especificado. En menor que : El formato será aplicado a las celdas con un valor menor que el indicado. Entre : Excel evaluará las celdas para saber aquellas que tengan un valor dentro del rango indicado y se les aplicará el formato. Es igual a : Solo las celdas que sean iguales a...

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

Validación masiva de RFC's de contribuyentes para el CFDI 4.0

Si eres Contador o has manejado la plataforma del SAT entonces creo que estamos hablando el mismo lenguaje, y como siempre Soluciones MS Excel VBA , busca automatizar tu trabajo y que tu día sea mucho mas productivo. Te dejo un archivo de Excel en donde puedes crear el archivo de texto de forma automatizada tal cual como solicita el SAT: El funcionamiento de esta herramienta es relativamente fácil de utilizar, basta con pegar la información a partir de la celda ( B1, C1 y D1 ) , en donde la celda: B = RFC C = Nombre D = Código Postal si no cumple con uno de estos criterios, nos marca el siguiente mensaje: Cumpliendo con los criterios ya mencionados, basta con darle Click en la opción Exportar: Y de forma automática genera el archivo de texto que se llama que por default lo guarda según en donde tengas esta herramienta.   Descargar Herramienta Nota: Probablemente te aparezca algún mensaje que la macro se ha bloqueado , y para que funcione la herramienta sigue los pasos que se en...