Por defecto, las UDF (Funciones definidas por el usuario) en Excel VBA no son volátiles. Sólo se recalculan cuando cambian los argumentos de la función. Una función volátil será recalculada siempre que el cálculo ocurra en cualquier celda de la hoja de trabajo. Veamos un ejemplo sencillo para explicar esto un poco más.
1. Abra el Editor de Visual Basic y haga clic en Insertar, Módulo.
Crear una función llamada MIFUNCIÓN que devuelve la suma de la celda seleccionada y la celda que está debajo de ella.
2. Añade las siguientes líneas de código:
Función MIFUNCIÓN (célula como rango) MIFUNCIÓN = celda.Valor + celda.Compensación(1, 0).Valor Fin de la función
3. Ahora puedes usar esta función, como cualquier otra función de Excel.
4. Esta es una función no volátil. Las funciones no volátiles sólo se recalculan cuando cambian los argumentos de la función. Cambia el valor de la celda B2 a 8.
5. Ahora cambia el valor de la celda B3 a 11.
Explicación: la función no volátil no se recalcula cuando cambia cualquier otra celda de la hoja.
6. Actualice la función de la siguiente manera para hacerla volátil:
Función MIFUNCIÓN (célula como rango) Aplicación. Volátil MIFUNCIÓN = celda.Valor + celda.Compensación(1, 0).Valor Fin de la función
7. Cambie el valor de la celda B3 a 12.
Resultado:
Nota: es necesario volver a entrar en la función para hacerla volátil (o refrescarla colocando el cursor en la barra de fórmulas y pulsando intro).