martes, 30 de junio de 2015

MACRO PARA CONVERTIR DE NUMEROS A LETRAS

Excel no trae por defecto una función que convierta de números a letras por lo tanto te mostrare los pasos para crear tu propia función para convertir números a letras, esto puede serte de mucha utilidad si usas Excel para imprimir facturas, certificados de estudios o reportes en los que debas ingresar un numero en letras.

PASOS PARA PONER TU MACRO


1. En excel te diriges a la ventana desarrollador de tu excel
2. clic en Visual Basic
3. Clic derecho en Hoja 1 (o clic derecho en el nombre de la hoja donde deseas que se posociones tu macro. vea la imagen.
Te aparecerá la siguiente ventana donde pegaras tu codigo.
Asi se vería tu macro en codigo Visual Basic.

CODIGO DE LA MACRO

Function cNumero(ByVal num As Long) As String
    Dim Texto As String
    
    Dim cUnidades, cDecenas, cCentenas
    Dim nUnidades, nDecenas, nCentenas As Byte
    
    Dim nMiles As Long
    Dim nMillones As Long
        
    
    cUnidades = Array("", "Un", "Dos", "Tres", "Cuatro", "Cinco", "Seis", "Siete", "Ocho", "Nueve", "Diez", "Once", "Doce", "Trece", "Catorce", "Quince", "Dieciseis", "Diecisite", "Dieciocho", "Diecinueve", "Veinte", "Veintiuno", "Veintidós", "Veintitrés", "Veitnicuatro", "Veinticinco", "Veintiseis", "Veintisiete", "Veintiocho", "Veintinueve")
    cDecenas = Array("", "Diez", "Veinte", "Treinta", "Cuarenta", "Cincuenta", "Sesenta", "Setenta", "Ochenta", "Noventa", "Cien")
    cCentenas = Array("", "Ciento", "Doscientos", "Trescientos", "Cuatrocientos", "Quinientos", "Seiscientos", "Setecientos", "Ochocientos", "Novecientos")

    nMillones = num \ 1000000
    nMiles = (num \ 1000) Mod 1000
    nCentenas = (num \ 100) Mod 10
    nDecenas = (num \ 10) Mod 10
    nUnidades = num Mod 10
    
    
 'Evaluación de Millones

            If nMillones = 1 Then
                Texto = "Un Millón" + IIf(num Mod 1000000 <> 0, " " + cNumero(num Mod 1000000), "")
                cNumero = Texto
                Exit Function
            ElseIf nMillones >= 2 And nMillones <= 999 Then
                Texto = cNumero(num \ 1000000) + " Millones" + IIf(num Mod 1000000 <> 0, " " + cNumero(num Mod 1000000), "")
                cNumero = Texto
                Exit Function
            
            
 
'Evaluación de Miles

            ElseIf nMiles = 1 Then
                Texto = "Mil" + IIf(num Mod 1000 <> 0, " " + cNumero(num Mod 1000), "")
                cNumero = Texto
                Exit Function
            ElseIf nMiles >= 2 And nMiles <= 999 Then
                Texto = cNumero(num \ 1000) + " Mil" + IIf(num Mod 1000 <> 0, " " + cNumero(num Mod 1000), "")
                cNumero = Texto
                Exit Function
            
            End If
                
            
            
            
            


'Evaluación desde 0 a 999
            
            
            'Casos Especiales
            If num = 100 Then
                Texto = cDecenas(10)
                cNumero = Texto
                Exit Function
            ElseIf num = 0 Then
                Texto = "Cero"
                cNumero = Texto
                Exit Function
            End If
            
            
            
            If nCentenas <> 0 Then
                Texto = cCentenas(nCentenas)
            End If
            
            
            If nDecenas <> 0 Then
                    If nDecenas = 1 Or nDecenas = 2 Then
                                If nCentenas <> 0 Then
                                    Texto = Texto + " "
                                End If
                        Texto = Texto + cUnidades(num Mod 100)
                        cNumero = Texto
                        Exit Function
                Else
                
                        If nCentenas <> 0 Then
                            Texto = Texto + " "
                        End If
                
                Texto = Texto + cDecenas(nDecenas)
            End If
            End If
                
                
            If nUnidades <> 0 Then
                    If nDecenas <> 0 Then
                        Texto = Texto + " y "
                    ElseIf nCentenas <> 0 Then
                        Texto = Texto + " "
                    End If
            Texto = Texto + cUnidades(nUnidades)
            End If
            

cNumero = Texto
End Function

UNA VEZ COPIADO NUESTRO CODIGO PROCEDEMOS A GUARDAR NUETRO LIBRO DE EXCEL HABILITADO PARA MACROS DE LO CONTRARIO LA FUNCIÓN INSERTADA NO FUNCIONARIA.

Para Guardar nuestro libro habilitado para macros presionamos Ctrl + S

Si ya lo teníamos guardado damos clic en No para guardarlo nuevamente ya habilitado para macros.
Seleccionamos la opcion libro de Excel habilitado para macros y damos clic en Guardar.

Ahora podemos hacer uso de nuestra nueva función.

2 comentarios:

El Aula del Futuro – Un Mundo que nos Alcanza