En las versiones de Microsoft Excel enumeradas en la sección "La información de este artículo se refiere a" puede crear una función definida por el usuario que devuelva un cálculo personalizado utilizando 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 de una celda de hoja de cálculo.
Resumen
Una función definida por el usuario llamada por una fórmula de una celda de hoja de cálculo no puede cambiar el entorno de Microsoft Excel. Esto significa que este tipo de función no puede hacer nada de lo siguiente:
-
Insertar, eliminar o dar formato a celdas de la hoja de cálculo.
-
Cambiar el valor de otra celda.
-
Mover, cambiar el nombre, eliminar o agregar hojas a un libro.
-
Cambiar cualquiera de las opciones del entorno, como el modo de cálculo o las vistas de la pantalla.
-
Agregar 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 está incluida en las funciones suministradas con Microsoft Excel. Las funciones incluidas en Microsoft Excel tampoco pueden cambiar el entorno. Las funciones pueden realizar un cálculo que devuelva un valor o texto a la celda en la que se escriben. Cualquier modificación del entorno debe realizarse mediante 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 se han calculado todos los precedentes, Excel pasa una celda Null o vacía a la función. Después, Excel se asegura de que se realicen suficientes pasos de cálculo para todos los precedentes que se van a calcular. Durante el último paso de cálculo, se pasan los valores actuales de las celdas a la función definida por el usuario. Esto puede hacer que se llame a la función definida por el usuario con más frecuencia de lo esperado. Por tanto, la función definida por el usuario puede devolver valores inesperados.
Para lograr un cálculo correcto, todos los rangos que se utilizan en el cálculo se deben pasar 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 de VBA de la función, Excel no puede responder de ellos dentro del motor de cálculo. Por tanto, Excel no puede calcular correctamente el libro para asegurarse de que se calculan todos los precedentes antes de calcular la función definida por el usuario.
Más información
"Manual 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 Visual Basic de Microsoft Excel 7.0.