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.

Función no volátil en Excel VBA

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.

Cambios en el argumento de la función

5. Ahora cambie el valor de la celda B3 a 11.

Cualquier otro cambio de celda

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:

Función volátil en Excel VBA

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