Resumen
En las versiones de Microsoft Excel enumeradas en la sección "Se aplica a", puede crear una función definida por el usuario que devuelva un cálculo personalizado mediante Visual Basic para Aplicaciones. Sin embargo, las funciones definidas por el usuario no pueden realizar acciones que cambien el entorno de Microsoft Excel cuando las llame una fórmula en una celda de la hoja de cálculo.
Más información
Una función definida por el usuario a la que llama una fórmula en una celda de la hoja de cálculo no puede cambiar el entorno de Microsoft Excel. Esto significa que dicha función no puede realizar ninguna de las siguientes acciones:
- Inserte, elimine o dé formato a celdas en la hoja de cálculo.
- Cambiar el valor de otra celda.
- Mueva, cambie el nombre, elimine o agregue hojas a un libro.
- Cambie cualquiera de las opciones de entorno, como el modo de cálculo o las vistas de pantalla.
- Agregue nombres a un libro.
- Establecer propiedades o ejecutar la mayoría de los métodos.
El propósito de las funciones definidas por el usuario es permitir al usuario crear una función personalizada que no se incluye en las funciones incluidas con Microsoft Excel. Las funciones incluidas en Microsoft Excel tampoco pueden cambiar el entorno. Las funciones pueden realizar un cálculo que devuelve un valor o texto a la celda en la que se escriben. Los cambios ambientales se deben realizar mediante el uso de una subrutina de Visual Basic.
Durante el cálculo, Excel examina los precedentes de la celda que contiene una función definida por el usuario. Si no todos los precedentes se han calculado hasta el momento durante el proceso de cálculo, Excel finalmente llamará a la función definida por el usuario y pasará una celda Null o Empty a la función. Excel se asegura de que se produzcan suficientes pasadas de cálculo para que se calculen todos los precedentes. Durante la fase de cálculo final, la función definida por el usuario pasa los valores actuales de las celdas. Esto puede provocar que la función definida por el usuario se llame con más frecuencia de lo esperado y con argumentos inesperados. Por lo tanto, la función definida por el usuario puede devolver valores inesperados.
Para un cálculo correcto, todos los rangos que se usan en el cálculo deben pasarse a la función como argumentos. Si no pasa los rangos de cálculo como argumentos, en lugar de hacer referencia a los rangos dentro del código VBA de la función, Excel no puede tener en cuenta para ellos dentro del motor de cálculo. Por lo tanto, es posible que Excel no calcule adecuadamente el libro para asegurarse de que todos los precedentes se calculan antes de calcular la función definida por el usuario.
Referencias
"Guía del usuario de Visual Basic" versión 5.0, capítulo 4, "Qué es un procedimiento de Visual Basic"
"Escribir una función de hoja de cálculo definida por el usuario", archivo de ayuda de Microsoft Excel 7.0 Visual Basic.