Refrescar resultado de función en Excel

Estimados amigos:
He construido una función propia en excel cuyo código es como se muestra:
======================================================
Public Function fTarget(sPar As String, sSource As String) As Variant
Dim nResult As Variant
'vars
nResult = WorksheetFunction.SumIf(Sheets(sSource).Range("A:A"), sPar, Sheets(sSource).Range("B:B"))
'retorno
fTarget = nResult
End Function
======================================================
La función trabaja correctamente la primera vez, pero cuando se cambia el criterio de suma(sPar) el resultado no se refresca. He intentado con la instrucción Application.Calculate pero no obtengo ningún cambio.
Apreciaré que algún experto me indique como lograr que la hoja o el rango de datos se refresque de igual forma como sucede cuando se usa una función nativa de Excel.
Cordial saludo
Lordage

1 Respuesta

Respuesta
1
El problema es que al trabajar con cadenas de texto como argumentos de la función, Excel no puede saber cuando debe recalcularla. Prueba poniendo
Application. Volatile
Como primera línea de la función, con lo que "obligarás" a Excel a recalcularla cada vez que tenga que hacer un recalculo. Lo malo que tiene esto es precisamente eso: que se recalculará incluso cuando no sea necesario.
Hola:
Muchas gracias por la respuesta, interesante solución. El único detalle como acertadamente comentas es el hecho de que se genera un recalculo innecesario en Excel. Si la función se utiliza en un rango amplio de datos es posible que esto torne lenta la aplicación.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas