Está en la página 1de 8

Microsoft 365

Soporte técnicoOffice Todo Microsoft

Productos
Buscar 

Crear funciones personalizadas en Dispositivos


Christian Noguera

Excel Más

Comprar Microsoft 365


Excel para Microsoft 365, Excel para Microsoft 365 para Mac, Excel para la Web,

Sus aplicaciones favoritas en un solo plan con


Microsoft 365
Desbloquear ahora

Aunque Excel incluye una multitud de funciones de hoja de cálculo integradas, lo más
probable es que no tenga una función para cada tipo de cálculo que realice. Los diseñadores
de Excel posiblemente no podían anticipar las necesidades de cálculo de cada usuario. En su
lugar, Excel le proporciona la capacidad de crear funciones personalizadas, que se explican en
este artículo.

Crear una función personalizada sencilla 

Las funciones personalizadas, como las macros, usan el Visual Basic para Aplicaciones de
programación de Visual Basic para Aplicaciones (VBA). Difieren de las macros de dos
maneras significativas. En primer lugar, usan procedimientos de función en lugar de
procedimientos sub. Es decir, comienzan con una instrucción Function en lugar de una
instrucción Sub y terminan con La función fin en lugar de Finalizar sub. En segundo lugar,
realizan cálculos en lugar de realizar acciones. Determinados tipos de instrucciones, como las
instrucciones que seleccionan y formatear rangos, se excluyen de las funciones
personalizadas. En este artículo, aprenderá a crear y usar funciones personalizadas. Para crear
funciones y macros, trabaje con el Editor de Visual Basic (VBE),que se abre en una nueva
ventana independiente de Excel.

Supongamos que su empresa ofrece un descuento de cantidad del 10 por ciento en la venta
de un producto, siempre que el pedido sea para más de 100 unidades. En los párrafos
siguientes, mostraremos una función para calcular este descuento.

En el ejemplo siguiente se muestra un formulario de pedido que enumera cada artículo,


cantidad, precio, descuento (si lo hay) y el precio ampliado resultante.

¿Le ha sido útil esta información? Sí No


×
Para crear una función DESCUENTO personalizada en este libro, siga estos pasos:

1. Presione Alt+F11 para abrir el Editor de Visual Basic (en mac, presione
FN+ALT+F11)y, a continuación, haga clic en Insertar > módulo. Aparecerá una
ventana de módulo nueva en el lado derecho del editor de Visual Basic.

2. Copie y pegue el siguiente código en el nuevo módulo.

Function DISCOUNT(quantity, price)


If quantity >=100 Then
DISCOUNT = quantity * price * 0.1
Else
DISCOUNT = 0
End If

DISCOUNT = Application.Round(Discount, 2)
End Function

Nota: Para que el código sea más legible, puede usar la tecla Tab para aplicar
sangría a las líneas. La sangría es solo para su beneficio y es opcional, ya que el
código se ejecutará con o sin él. Después de escribir una línea con sangría, el Editor
de Visual Basic asume que la siguiente línea tendrá una sangría similar. Para
desplazarse (es decir, a la izquierda) un carácter de pestaña, presione Mayús+Tab.

Usar funciones personalizadas 

Ahora ya está listo para usar la nueva función DESCUENTO. Cierre el Visual Basic, seleccione la
celda G7 y escriba lo siguiente:

=DESCUENTO(D7;E7)

Excel calcula el descuento del 10 por ciento en 200 unidades a 47,50 $ por unidad y devuelve
950,00 $.

En la primera línea del código vba, Descuento de función(cantidad, precio), indicó que la
función DESCUENTO requiere dos argumentos, cantidad y precio. Al llamar a la función en una
celda de hoja de cálculo, debe incluir esos dos argumentos. En la fórmula
=DESCUENTO(D7,E7), D7 es el argumento cantidad y E7 es el argumento precio. Ahora puede
copiar la fórmula DESCUENTO en G8:G13 para obtener los resultados que se muestran a
continuación.

Veamos cómo Excel este procedimiento de función. Al presionar Entrar,Excel busca el nombre
DESCUENTO en el libro actual y se da cuenta de que es una función personalizada en un
módulo de VBA. Los nombres de argumento entre paréntesis, cantidad y precio
sonmarcadores de posición para los valores en los que se basa el cálculo del descuento.

¿Le ha sido útil esta información?


×
La instrucción Si del siguiente bloque de código examina el argumento cantidad y determina
si el número de elementos vendidos es mayor o igual que 100:

If quantity >= 100 Then


DISCOUNT = quantity * price * 0.1
Else
DISCOUNT = 0
End If

Si el número de artículos vendidos es mayor o igual que 100, VBA ejecuta la siguiente
instrucción, que multiplica el valor de cantidad por el valor de precio y multiplica el resultado
por 0,1:

Discount = quantity * price * 0.1

El resultado se almacena como la variable Descuento. Una instrucción VBA que almacena un
valor en una variable se denomina instrucción de asignación, ya que evalúa la expresión en el
lado derecho del signo igual y asigna el resultado al nombre de la variable de la izquierda.
Dado que la variable Descuento tiene el mismo nombre que el procedimiento de función, el
valor almacenado en la variable se devuelve a la fórmula de la hoja de cálculo denominada
función DESCUENTO.

Si la cantidad es menor que 100, VBA ejecuta la siguiente instrucción:

Discount = 0

Por último, la siguiente instrucción redondea el valor asignado a la variable Descuento a dos
posiciones decimales:

Discount = Application.Round(Discount, 2)

VBA no tiene ninguna función REDONDEAR, pero Excel sí. Por lo tanto, para usar REDONDEAR
en esta instrucción, le pide a VBA que busque el método Round (función) en el objeto
Application (Excel). Para ello, agregue la palabra Aplicación antes de la palabra Redondear. Use
esta sintaxis siempre que necesite obtener acceso a una función Excel desde un módulo VBA.

Descripción de las reglas de función personalizadas 

Una función personalizada debe empezar con una instrucción Function y finalizar con una
instrucción Función final. Además del nombre de la función, la instrucción Function suele
especificar uno o varios argumentos. Sin embargo, puede crear una función sin argumentos.
Excel incluye varias funciones integradas(RAND y AHORA, por ejemplo) que no usan
argumentos.

Después de la instrucción Function, un procedimiento de función incluye una o más


instrucciones de VBA que toman decisiones y realizan cálculos con los argumentos pasados a
la función. Por último, en algún lugar del procedimiento de función, debe incluir una
instrucción que asigne un valor a una variable con el mismo nombre que la función. Este valor
se devuelve a la fórmula que llama a la función.

Usar palabras clave de VBA en funciones personalizadas 

El número de palabras clave de VBA que puede usar en funciones personalizadas es menor
que el número que puede usar en macros. Las funciones personalizadas no pueden hacer
nada que no sea devolver un valor a una fórmula de una hoja de cálculo o a una expresión
usada en otra macro o función de VBA. Por ejemplo, las funciones personalizadas no pueden
cambiar el tamaño de las ventanas, editar una fórmula en una celda o cambiar las opciones de
fuente, color o patrón para el texto de una celda. Si incluye código de "acción" de este tipo en
un procedimiento de función, la función devuelve el #VALUE! .

La única acción que puede realizar un procedimiento de función (aparte de realizar cálculos)
¿Le ha sido útil esta información?
×
es mostrar un cuadro de diálogo. Puede usar una instrucción InputBox en una función
personalizada como medio para obtener información del usuario que ejecuta la función.
Puede usar una instrucción MsgBox como medio para transmitir información al usuario.
También puede usar cuadros de diálogo personalizados o Formularios de usuario,pero ese
es un asunto que está más allá del ámbito de esta introducción.

Documentar macros y funciones personalizadas 

Incluso las macros simples y las funciones personalizadas pueden ser difíciles de leer. Puede
hacerlos más fáciles de entender escribiendo texto explicativo en forma de comentarios.
Agregue comentarios antes del texto explicativo con un apóstrofo. Por ejemplo, en el ejemplo
siguiente se muestra la función DESCUENTO con comentarios. Agregar comentarios como
estos hace que sea más fácil para usted u otros usuarios mantener el código de VBA a medida
que pasa el tiempo. Si necesita realizar un cambio en el código en el futuro, le será más fácil
comprender lo que hizo originalmente.

Un apóstrofo indica a Excel que ignore todo a la derecha en la misma línea, para que pueda
crear comentarios en las líneas por sí mismos o en el lado derecho de las líneas que contienen
código VBA. Es posible que empiece un bloque de código relativamente largo con un
comentario que explique su propósito general y, a continuación, use comentarios en línea
para documentar instrucciones individuales.

Otra forma de documentar las macros y las funciones personalizadas es darles nombres
descriptivos. Por ejemplo, en lugar de nombrar una macro Etiquetas,podría nombrarla
MonthLabels para describir más específicamente el propósito que sirve la macro. Usar
nombres descriptivos para macros y funciones personalizadas es especialmente útil cuando ha
creado muchos procedimientos, especialmente si crea procedimientos con fines similares pero
no idénticos.

La forma en que documenta las macros y las funciones personalizadas es una cuestión de
preferencia personal. Lo importante es adoptar algún método de documentación y usarlo de
forma coherente.

Hacer que las funciones personalizadas estén disponibles en cualquier lugar 

Para usar una función personalizada, el libro que contiene el módulo en el que creó la función
debe estar abierto. Si ese libro no está abierto, obtiene una #NAME? al intentar usar la
función. Si hace referencia a la función de un libro diferente, debe preceder el nombre de la
función con el nombre del libro en el que reside la función. Por ejemplo, si crea una función
denominada DESCUENTO en un libro llamado Personal.xlsb y llama a esa función desde otro
libro, debe escribir =personal.xlsb!discount()y no simplemente =descuento().

Puede guardarse algunas pulsaciones de tecla (y posibles errores de escritura) seleccionando


las funciones personalizadas en el cuadro de diálogo Insertar función. Las funciones
personalizadas aparecen en la categoría Definido por el usuario:

¿Le ha sido útil esta información?


×
Una forma más sencilla de hacer que las funciones personalizadas estén disponibles en todo
momento es almacenarlas en un libro independiente y, después, guardar ese libro como un
complemento. A continuación, puede hacer que el complemento esté disponible siempre que
ejecute Excel. A continuación se explica cómo hacerlo:


Windows

1. Después de crear las funciones que necesita, haga clic en Archivo > Guardar como.

En Excel 2007, haga clic en el botón Microsoft Office yhaga clic en Guardar como

2. En el cuadro de diálogo Guardar como, abra la lista desplegable Guardar como tipo
y seleccione Excel complemento. Guarde el libro con un nombre reconocible, como
MyFunctions,en la carpeta AddIns. El cuadro de diálogo Guardar como propondrá
esa carpeta, por lo que todo lo que tiene que hacer es aceptar la ubicación
predeterminada.

3. Después de guardar el libro, haga clic en Archivo > Excel opciones.

En Excel 2007, haga clic en el botón Microsoft Office yhaga clic en Excel opciones.

4. En el cuadro de Excel opciones, haga clic en la categoría Complementos.

5. En la lista desplegable Administrar, seleccione Excel complementos. A


continuación, haga clic en el botón Ir.

6. En el cuadro de diálogo Complementos, active la casilla junto al nombre que usó


para guardar el libro, como se muestra a continuación.

¿Le ha sido útil esta información?


×
Después de seguir estos pasos, las funciones personalizadas estarán disponibles cada vez que
ejecute Excel. Si desea agregar a la biblioteca de funciones, vuelva al Editor Visual Basic
funciones. Si busca en el Editor Visual Basic de Project en un encabezado de VBAProject, verá
un módulo con el nombre del archivo de complemento. El complemento tendrá la extensión
.xlam.

Al hacer doble clic en ese módulo en el Explorador de Project, el editor de Visual Basic
muestra el código de función. Para agregar una nueva función, coloque el punto de inserción
después de la instrucción Función final que termina la última función en la ventana Código y
empiece a escribir. Puede crear tantas funciones como necesite de esta manera y siempre
estarán disponibles en la categoría Definido por el usuario en el cuadro de diálogo Insertar
función.

Acerca de los autores 

¿Necesitas más ayuda?


Siempre puede preguntar a un experto en Excel Tech Community u obtener soporte técnico
en Comunidades.

¿Le ha sido útil esta información?


×
¿Necesita más ayuda?

¿Cómo podemos ayudarle? 

¿Quiere más opciones?


 Descubrir  Comunidad

Explore las ventajas de las suscripciones, examine los cursos de aprendizaje, aprenda a
proteger su dispositivo y mucho más.

Ventajas de la Aprendizaje de Seguridad de Centro de


suscripción a Microsoft 365 Microsoft accesibilidad
Microsoft 365

Novedades Microsoft Educación Empresas Desarrollado Compañía


Store res y TI
Surface Laptop Microsoft Microsoft Cloud Oportunidades
Studio 2 Perfil de la cuenta Educación Centro para de empleo
Seguridad de desarrolladores
Surface Laptop Go 3 Centro de Dispositivos para Microsoft Acerca de
descarga educación Documentación Microsoft
Surface Pro 9 Azure
Soporte de Microsoft Teams Microsoft Learn Noticias de la
Surface Laptop 5 Microsoft Store para Educación Dynamics 365 compañía
Microsoft Tech
Surface Studio 2+ Devoluciones Microsoft 365 Microsoft 365 Community Privacidad en
Educación Microsoft
Microsoft 365 Seguimiento de Microsoft Industry Azure
pedidos Office Educación Marketplace Inversores
Aplicaciones de Microsoft Teams
Windows 11 Reciclar Formación y AppSource Sostenibilidad
desarrollo de Pequeñas empresas
Garantías educadores Microsoft Power
comerciales Platform
Ofertas para
estudiantes y Visual Studio
padres

Azure para
estudiantes

 Español (España, alfabetización internacional)


¿Le ha sido útil esta información?
Tus opciones de privacidad
×
Ponte en contacto con Microsoft Privacidad Condiciones de uso Marcas registradas Sobre nuestra publicidad
Docs de cumplimiento de la UE © Microsoft 2024

¿Le ha sido útil esta información?


×

También podría gustarte