Un Procedimiento Function tiene como finalidad contener algunas instrucciones o comandos en VBA, y como resultado final de estas instrucciones debe retornar un valor a quien haya invocado al procedimiento.
Un Procedimiento Function puede tener argumentos (parámetros) como parte de la sintaxis, y puede ser invocado tanto por el usuario (desde una celda en Excel), o desde otro procedimiento.
La principal diferencia con un Procedimiento Sub es que en este caso existe un retorno de valor a quien invoque a la función.
Sintaxis de un Procedimiento Function
La sintaxis para emplear una función es la siguiente:
[Public | Private] [Static] Function nombre [(Lista argumentos)][As tipo]
[instrucciones]
[nombre = expresión]
[Exit Function]
[instrucciones]
[nombre = expresión]
End Function
Los elementos disponibles en esta sintaxis son:
Public: Es opcional, se utiliza para indicar que el procedimiento Function es accesible para todos los procedimientos, de todos los módulos, de todos los proyectos activos de VBA.
Private: Es opcional, esta palabra nos indica que el procedimiento Function es accesible sólo para otros procedimientos del mismo módulo.
Static: Es opcional, se usa para indicar que los valores de las variables declaradas en el procedimiento Function, se conservan luego de emplear la función
Function: Este elemento es obligatorio, es la palabra clave que indica el comienzo de un procedimiento function
Nombre: Elemento requerido, es el nombre con el que se podrá invocar al procedimiento Function, este nombre tendrá que volver a emplearse al finalizar la función.
Lista argumentos: Son opcionales, corresponde a la lista de una o más variables que permitirá que la función reciba los datos con los cuales pueda realizar las operaciones requeridas.
Tipo: Es opcional, corresponde al tipo de dato devuelto por el procedimiento Function.
Instrucciones: Son opcionales, estas instrucciones son las que deben contener la lógica correspondiente a la función.
Exit Function: Es una instrucción opcional, la que fuerza una salida inmediata del procedimiento Function, antes de que finalice de forma normal.
End function: Es elemento requerido, es la instrucción con la que se señala el final del procedimiento Function.
Ámbito de la Función
El ámbito de la función determina si puede ser llamada por procedimientos de otros módulos o de otras hojas de cálculo. Si no se declara el ámbito de la función, su ámbito predeterminado es público.
Las funciones declaradas como privadas (private) no se encuentran disponibles para ser invocadas desde las hojas de Excel, pero si pueden ser utilizadas desde otros procedimientos (macros) que se encuentren en el mismo módulo.
¿Porqué crear funciones personalizadas?
Aún considerando que Excel contiene más de 300 funciones de hoja de cálculo predeterminadas, es normal que aparezcan situaciones en las que requiera de funciones personalizadas, y si este necesidad se hace mas importante si las mismas operaciones serán necesarias de forma recurrente.
Las funciones personalizada también sirven para acortar significativamente las fórmulas, logrando que sean más legibles y fáciles de trabajar con ellas.
Aunque se podría pensar que crear funciones de hoja de cálculo personalizadas es complicado, la verdad es que es muy sencillo, a estas funciones también se les conoce como UDF (User Defined Functions), para conocer más de este tipo de funciones y revisar una importante cantidad de ejemplos de las mismas, puede revisar: Funciones definidas por el usuario.