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:
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
Si multiplicamos 5 * 1 el resultado es 5
Si modificamos la celda cambiando el 1 por el 3 en la celda "C2" el resultado sigue siendo 5
Agregamos "Application.Volatile" en el codigo, para convertirlo en UDF volátil.
Intentamos de nuevo modificar la celda cambiando el 2 por el 5 en la celda "C2" el resultado es 25
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.
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
Application.Volatile
ResultadoFormula = cell.Value * cell.Offset(0, 1).Value
End Function
No hay comentarios :
Publicar un comentario