Función definida por el usuario de Excel VBA (UDF)
Microsoft nos ofrece muchas funciones integradas para acelerar el trabajo en Excel. Sin embargo, utilizando la codificación VBA podemos crear nuestras propias funciones y esas funciones se denominan técnicamente "Funciones definidas por el usuario" (UDF). También se denominan "funciones personalizadas" en Excel VBA.
Cualquier fórmula a la que se pueda acceder desde la hoja de trabajo con un fragmento de código se denomina UDF. En términos simples, cualquier fórmula que no esté incorporada pero que esté disponible en Excel se llama Funciones definidas por el usuario.

¿Cómo crear funciones definidas por el usuario?
Aunque UDF es parte de nuestro módulo, no son parte de nuestra subrutina regular en VBA. Esto se denomina Procedimiento de función en VBA. Al igual que cuando comenzamos la codificación de macros con la palabra SUB de manera similar, debemos comenzar con la palabra "Función". El subprocedimiento tiene inicio y fin, del mismo modo que el procedimiento de función tiene inicio y fin.
Ejemplo n. ° 1: crear una función de suma UDF simple
Crearemos nuestra propia función SUM en Excel sumando dos números.
- Para iniciar la codificación, inicie la palabra "Función" en uno de los módulos.

- Al igual que la forma en que nombramos la macro de manera similar, también debemos darle un nombre a nuestra función. Este nombre se utiliza como nombre de fórmula.

A diferencia de la subrutina, no podemos simplemente presionar enter para crear un procedimiento, pero debemos mencionar los argumentos aquí.
Por ejemplo, observe la siguiente sintaxis de la función de hoja de trabajo SUM.
Número 1, Número 2 son argumentos de la función SUMA.
- Del mismo modo, debemos mencionar nuestros argumentos.

Aquí he declarado los argumentos como "x como entero" e "y como entero". Dado que agregamos un valor numérico, necesitamos asignar el tipo de datos solo como un tipo de datos numéricos.
Después de declarar los argumentos, también he asignado el tipo de retorno del Integer porque el resultado dado por la Función "OurSum" también es un valor numérico.
- Ahora, dentro de la función, debemos mencionar la fórmula que vamos a utilizar. Aquí necesitamos usar la función para empezar.

Mencionamos que el nombre de la fórmula " OurSum " debe sumar xey.
- Ok, guarda el código y ve a la hoja de trabajo.

- He introducido algunos números aquí. Abra el signo igual y comience a escribir OurSum. Puede ver el nombre de la fórmula que aparece aquí.

- Como seleccionamos celdas de manera similar, seleccionamos dos celdas por separado.

- Después de seleccionar dos celdas, presione la tecla Intro para obtener resultados.

Por lo que funciona exactamente igual que nuestra función SUM normal.
- Ok, ahora cambiaré los números.

- Ahora de nuevo, aplicaré la función que hemos creado.

¡¡¡Oh!!! Obtuvimos valores de error a excepción de la primera celda.
Debes estar pensando por qué obtuvimos un error.
Si observa las celdas A2 y B2, tenemos los valores 48170 y 21732. Dado que hemos asignado el tipo de datos como Integer, no puede contener ningún número superior a 32767. Esta es la razón por la que obtuvimos el error de Excel como #NUM !.
Ahora agregaré números menores a 32767.

En la imagen de arriba, todos los números son números enteros, es decir, menos de 32767.
En la primera celda, obtuvimos los resultados. Pero en la segunda celda, es decir, la celda C2, obtuvimos el valor de error como # ¡VALOR !.
Aunque ambos números son inferiores a 32767, seguimos recibiendo el error.
Esto se debe a que hemos declarado el resultado final también como Integer.

Entonces, cuando agregamos 16000 y 17229, obtendremos un valor como 33229, que es más que el límite de tipo de datos enteros de 32767. Entonces, el resultado final es un valor de error.
Ejemplo n. ° 2: crear una función para probar valores lógicos
Crearemos una función más para probar los valores lógicos. Necesitamos una función que devuelva "Bueno" si el número es> = 60, y necesitamos el resultado como "Malo" si el número es <= 50.
Paso 1: Inicie el procedimiento de función y asigne un nombre al procedimiento.

Paso 2: proporcione el argumento como TestScore como Integer.

Paso 3: Nuestro resultado final debe ser "Bueno" o "Malo", por lo que el resultado debe estar en String.
Paso 4: Primero, necesitamos probar si la puntuación es> = 60 o no. Utilice la condición IF para probar.

Paso 5: si la puntuación de la prueba es> = 60, necesitamos que la función devuelva el resultado como "Bueno". Entonces TestResult = "Bueno".

Paso 6: si la puntuación de la prueba es inferior a 60, el resultado de la función debería ser "Malo".

Ok, hemos terminado.
- Guarde el código y vaya a la hoja de trabajo.

He ingresado algunos números aquí como puntaje de prueba.
- Aplica la función que hemos creado para llegar a resultados.

- Seleccione la celda y presione enter.

De esto se trata UDF.