viernes, 5 de agosto de 2016

Funciones personalizadas con VBA volátiles | UDF Volatile



En Excel VBA el Método Application.Volatile marca como volátil una función UDF (funciones definidas por el usuario). lo que permite el recalcularse cuando se modifica cualquier celda de la hoja de cálculo. En Excel las funciones pueden ser volátiles o no volátiles, en el caso de la función UDF (function vba) no es volátil por defecto, sólo se vuelven a calcular cuando cualquiera de los argumentos de la función sufre un cambio.

Podemos decir entonces que el resultado de una formula / función se actualiza en cada recalculo de la hoja electrónica, es decir un  nuevo cálculo inteligente de Excel.

Para convertirlo en una función volátil lo veremos en el siguiente ejemplo:

UDF no volátil

Application.Volatile

Si multiplicamos 5 * 1 el resultado es 5
Application, UDF

Si modificamos la celda cambiando el 1 por el 3 en la celda "C2" el resultado sigue siendo 5
Formula VBA Excel


Agregamos "Application.Volatile" en el codigo, para convertirlo en UDF volátil.
Application.Volatile

Intentamos de nuevo modificar la celda cambiando el 2 por el 5 en la celda "C2" el resultado es 25
Función definida por el usuario Microsoft Excel


Con sólo una ligera modificación en el código VBA agregando Application.Volatile logramos un resultado correcto en la multiplicación.

Código de la UDF
El código deberá ser ingresado en un módulo normal del IDE de vba.

Function ResultadoFormula(cell As Range)
  
    Application.Volatile
    ResultadoFormula = cell.Value * cell.Offset(0, 1).Value

End Function

No hay comentarios :

Publicar un comentario