Está en la página 1de 7

Funciones personalizadas

En este capítulo
Son funciones creadas en el editor de VBA para resolver casos específicos del
negocio. El propósito de funciones definidas por el usuario es permitir al usuario
crear una función personalizada que no se incluye en las funciones de Microsoft
Excel.
Es así que Excel deja abierta la posibilidad a sus usuarios de definir cuantas
funciones personalizadas desee, ya sea para un libro en concreto o disponibles en una
especie de “librerías” (complementos) para que puedan ser usadas desde cualquier
otro libro que la necesite.

¿Qué vamos aprender?


Al finalizar este capítulo usted podrá:
 Conocer la sintaxis de una función personalizada.
 Crear y aplicar funciones personalizadas
 Crear complementos.

Funciones personalizadas
Para este ejemplo asumiremos que deseamos crear una función llamada SinIGV que
desagregue el IGV de un importe.
 Ingrese al Editor de VBA e inserte un módulo
Lectura  Dentro de esta nueva ventana se escribe la función entre las palabras
reservadas Function y End Function.

Function SinIGV(Importe As Double)


SinIGV = Importe / 1.18
End Function

Esta es la función personalizada SinIGV, que recibe un Importe como parámetro


y devuelve como resultado el monto que no incluye el IGV.

Guía de Aplicación Página 1


Microsoft Excel

Sintaxis

Para escribir una función, debe considerar la siguiente sintaxis:

Function NombreFunción (Lista de parámetros)


sentencia1
sentencia2
End Function

Luego del nombre de la función debe indicar todos los parámetros que esta necesitará
para realizar su cálculo. Estos parámetros se separan con comas y cada uno se define
indicando su nombre y luego su tipo, de la siguiente forma:

NombreParámetro AS Tipo

En el ejemplo se ha definido un parámetro llamado Importe y de tipo Double. El


tipo indica que datos serán aceptados por el parámetro. Double permite aceptar
números en coma flotante de tamaño mediano.

Note como devuelve un resultado la función:


SinIGV = Importe / 1.18
Se usa el mismo nombre de la función y se iguala a un cálculo (también podría
haberse usado una variable si es que el cálculo es muy complejo).

Actividad 1: Funciones personalizadas sencillas


Objetivo
Crear y aplicar funciones personalizadas
Resolviendo

Ingresar al editor de VBA

1. Presionar las teclas ALT + F11 para ingresar el editor de VBA.


2. Inserte un módulo.
3. Escriba el siguiente código:

Function SinIGV(Importe As Double)


SinIGV = Importe / 1.18
End Function

4. Para probar la función

Página 2 Guía de Aplicación


Funciones personalizadas

a. Por ejemplo, considerando una hoja de cálculo como la


mostrada:

b. En la celda C6 se tiene:

=SinIGV(B6)

c. El parámetro Importe está representado en este caso por el valor


de la celda B6 (el importe). Excel muestra el resultado:

Copiar la función personalizada.


1. Puede copiar la fórmula arrastrando el cuadro de control.

2. Puede editar la función, empleando la tecla F2.

3. Las funciones UDF son consideradas como otra función de Excel, por
ejemplo, el nombre se muestra automáticamente si la escribe en su hoja
de cálculo:

Guía de Aplicación Página 3


Microsoft Excel

Actividad 2: Funciones personalizadas con 2 o más argumentos


Objetivo
Crear y aplicar funciones con 2 o más argumentos
Resolviendo

Se pide desarrollar una función que permita calcular el monto resultante de


depositar un capital de préstamo de acuerdo a una tasa fija y por un periodo X. De
acuerdo a la siguiente fórmula:

Donde:

S  P(1  i) n P = capital
i = tasa efectiva mensual
n = Número de períodos

N = periodo en meses
En este ejemplo se deben enviar 3 argumentos: el capital depositado ( P ), la tasa ( i) y el
periodo de depósito ( n ). Considere la tasa efectiva mensual.

1. Ingrese al Módulo : ALT + F11


2. En el módulo de VBA, escriba la siguiente función:

Function SaldoFinal(capital, tasa, periodo) As Single


Dim x as Single
x = capital * (1 + tasa ) ^ periodo
SaldoFinal = x
End Function

Página 4 Guía de Aplicación


Funciones personalizadas

Actividad 3: Empleando la rutina IF / END IF

Objetivo:
Resolver una función con la estructura IF / ENDIF para decisiones.

La función se llama IMPORTE, calcula el importe obtenido por las horas extras,
teniendo en cuenta que se trabajar 160 horas, el resto de hora se aplica como horas extras
con el 50% adicional

Estructura

IF pregunta THEN

Expressión verdarera

ELSE

Expresión falsa

END IF

En el siguiente código, se emplea la función Importe con 2 argumentos. Cada


argumento puede ser de diferente tipo y son separados siempre por la coma.
1. En el editor VBA :
2. Ingresa la siguiente función :

Function Importe(sueldo As Single, horas As Integer)

If horas > 160 Then


he = horas - 160
ph = sueldo / 160
phe = ph * 1.5
Importe = phe * he
Else
Importe = 0
End If

3. Guarda y resuelve esta función en la hoja Horas_Extras.

Considerando la siguiente hoja:

Guía de Aplicación Página 5


Microsoft Excel

En la celda E6, se debe escribir:


=Importe(C6,D6)

Recordar que el editor debe tener la lista de las 3 funciones:

Actividad 4: Empleando funciones de Texto y fecha

Objetivo:
Resolver una función aplicando funciones de texto y fecha.

Se desea obtener una función que genera la cuenta de usuario, considerando lo siguiente:

La primera del nombre seguido del apellido y finalmente el año de nacimiento

Ejemplo :

Empleado Fecha de Nac Usuario


Cesar Oceda 12/11/1971 coceda1971

Página 6 Guía de Aplicación


Funciones personalizadas

Ingresar al editor VBA : ALT + F11


Escribir el siguiente código:

Function Genera(nombre As String, fecha As Date)

inicial = Left(nombre, 1)
espacio = InStr(nombre, " ")
apellido = Mid(nombre, espacio + 1, Len(nombre) - espacio)
año = Year(fecha)
Genera = LCase(inicial & apellido & año)

End Function

Verificar en la hoja Cuentas:

Guía de Aplicación Página 7

También podría gustarte