De forma predeterminada, las UDF ( funciones definidas por el usuario ) en Excel VBA no son volátiles. Solo se vuelven a calcular cuando cambia alguno de los argumentos de la función. Una función volátil se volverá a calcular siempre que se produzca un cálculo en cualquier celda de la hoja de trabajo. Echemos un vistazo a un ejemplo sencillo para explicar esto un poco más.
1. Abra el Editor de Visual Basic y haga clic en Insertar, Módulo.
Cree una función llamada MYFUNCTION que devuelva la suma de la celda seleccionada y la celda debajo de esta celda.
2. Agregue las siguientes líneas de código:
Function MYFUNCTION(cell As Range)
MYFUNCTION = cell.Value + cell.Offset(1, 0).Value
End Function
3. Ahora puede utilizar esta función, como cualquier otra función de Excel.
4. Ésta es una función no volátil. Las funciones no volátiles solo se recalculan cuando cambia alguno de los argumentos de la función. Cambie el valor de la celda B2 a 8.
5. Ahora cambie el valor de la celda B3 a 11.
Explicación: la función no volátil no se vuelve a calcular cuando cambia cualquier otra celda de la hoja.
6. Actualice la función de la siguiente manera para que la función sea volátil:
Function MYFUNCTION(cell As Range)
Application.Volatile
MYFUNCTION = cell.Value + cell.Offset(1, 0).Value
End Function
7. Cambie el valor de la celda B3 a 12.
Resultado:
Nota: debe ingresar la función nuevamente para que sea volátil (o actualizarla colocando el cursor en la barra de fórmulas y presionando enter).
4/5 Completado! Más información sobre funciones y subs>
Capítulo siguiente: Objeto de aplicación