Si eres un fanático de Excel como yo, quizá ya hayas visto e incluso instalado algunos complementos para Excel, existen muchos realmente útiles, algunos son pagados y otros son gratis, pero el propósito de este articulo es iniciarte en el mundo de la creación de complementos para Excel. Si esto de los complementos es nuevo para ti, te recomiendo que primero leas este otro articulo que habla un poco de como se instalan. 

Crear un complemento puede ser fácil o difícil, todo depende de lo que desees programar, pero para este ejercicio vamos a crear un complemento que convierta números a letras y al finalizar tendremos siempre disponible en nuestro Excel una función que nos permita convertir cualquier numero a letras.

Primero debemos crear un nuevo documento de Excel, luego presionamos Ctrl+F11 para entrar al editor de VBA, luego insertamos un Modulo.

Insertar un modulo de codigo en VBA

Ahora en la parte izquierda copiamos y pegamos el siguiente código:

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

Ya casi hemos terminado ahora cerramos esta ventana de VBA y guardamos el archivo de Excel que creamos como «Complemento de Excel» de extensión xla para Excel 2003 y xlam para Excel 2007 o superior. Por cierto, el formato xla del Excel 2003 también es compatible con las versiones posteriores (Excel 2007 en adelante)

Guardar archivo para convertirlo en complemento de Excel

Ahora ya tienes tu primer complemento de Excel, para usarlo antes debes instalarlo, consulta estos artículos si nunca antes habías instalado un complemento en Excel 2010 o 2007.

Este complemento agrega una función más a tu Excel llamada NumLetras, para usarla solo inserta en una celda la función con los parámetros que solicita.

Conclusiones

Para crear un complemento básicamente creamos una o más macros, luego guardamos el archivo de Excel como Complemento y de esta forma podemos reutilizar dichas macros en cada archivo de Excel que usemos. Te recomiendo que leas un poco más sobre macros y VBA, puedes encontrar más información aquí.