En esta ocasión me toca comentarles cuáles son las semejanzas y diferencias entre los procedimientos Sub y Function.
Semejanzas entre Sub y Function
Para ello empezaremos mencionando primero las SEMEJANZAS:
- Ambos son procedimientos, es decir, son conjuntos de instrucciones VBA que se encuentran en un módulo.
- Ambos pueden recibir argumentos (datos que se transfieren entre procedimientos).
- Un módulo VBA puede contener ambos tipos de procedimientos.
- El ámbito de ambos puede ser público o Privado.
- Pueden ser llamados / invocados desde un procedimiento SUB.
Diferencias entre Sub y Function
A continuación, indicaremos las DIFERENCIAS que encontramos:
- Un procedimiento Sub puede ser creado desde la grabadora de macros; cosa que no sucede con el procedimiento Function.
- Un procedimiento Function devuelve un único valor (o matriz), el cual se puede usar como parte de una expresión en un procedimiento o dentro de una fórmula en la hoja de Excel.
- Un procedimiento Function es muy útil cuando se observan secuencias del programa que repiten cálculos con frecuencia, permitiéndonos reducir líneas de código.
- Un procedimiento Sub inicia con la sentencia SUB seguida del nombre del procedimiento y finaliza con END SUB; Un procedimiento Function inicia con la sentencia FUNCTION seguida del nombre del procedimiento y finaliza con END FUNCTION
- Un procedimiento Function opera bien cuando se encuentra dentro de un módulo normal de VBA; pero devuelve un error cuando se crea dentro de un Userform, una Hoja o un ThisWorkbook.
- Un procedimiento SUB se puede ejecutar:
- Comando Ejecutar > Ejecutar Sub / Userform
- Pulsando F5
- Pulsando botón Ejecutar
- Desde la ventana Inmediato del editor VBA
- Desde cuadro de diálogo Macro de Excel
- Usando la combinación de teclas asociadas (Ctrl)
- Desde un botón con macro asignada
- Desde una imagen con macro asignada
- Desde otro procedimiento
- Desde un control personalizado de la Cinta de Opciones
- Desde un menú contextual personalizado
- Cuando de produce un evento asociado a un objeto
- Un procedimiento Function se puede ejecutar:
- Llamado desde un procedimiento
- Usándolo desde una fórmula en una hoja de cálculo
- Usándolo desde una fórmula dentro de un formato condicional
- Desde la ventana Inmediato del editor VBA
Les dejo un ejemplo de la función IMC invocada desde un Procedimiento SUB y usada en una fórmula en hoja de cálculo del libro:
Esperamos que esta información les haya sido de utilidad.
Hasta pronto...!!!
Wiston Narro V.