Por defecto, ( enlace: / VBA-ejemplos-user—​función definida [funciones definidas por el usuario]) de UDF en Excel VBA no son volátiles. Sólo se vuelven a calcular cuando cualquiera de los argumentos de la función de cambio. Una función volátil se volverá a calcular cada vez que se produce cálculo en cualquier célula en la hoja de cálculo. Vamos a echar un vistazo a un ejemplo fácil de explicar esto un poco más.

  1. Abra el Editor de Visual Basic y haga clic en Insertar, Módulo.

Crear un llamado MyFunction función que devuelve la suma de la celda seleccionada y la celda debajo de esta célula.

  1. Añadir las siguientes líneas de código:

Function MYFUNCTION(cell As Range)

MYFUNCTION = cell.Value + cell.Offset(1, 0).Value

End Function
  1. Ahora puede utilizar esta función, al igual que cualquier otra función de Excel.

Non-volatile Function in Excel VBA

  1. Esta es una función no volátil. funciones no volátiles solamente se vuelven a calcular cuando cualquiera de cambio de los argumentos de la función. Cambiar el valor de la celda B2 a 8.

Function’s Argument Changes

  1. Ahora cambiar el valor de la celda B3 a 11.

Any Other Cell Changes

Explicación: la función no volátil no se vuelve a calcular cuando cualquier otra célula en la hoja cambia.

  1. Actualización de la función de la siguiente manera para hacer que la función volátil:

Function MYFUNCTION(cell As Range)

Application.Volatile

MYFUNCTION = cell.Value + cell.Offset(1, 0).Value

End Function
  1. Cambiar el valor de la celda B3 a 12.

Resultado:

Volatile Function in Excel VBA

Nota: es necesario introducir de nuevo la función para que sea volátil (o actualizarla colocando el cursor en la barra de fórmulas y pulsar enter).