una sumas resultado refrescar otra hoja hasta guardar funciones datos cambia automaticamente actualizar actualiza excel vba excel-vba user-defined-functions

sumas - Actualizar los resultados de la función Excel VBA



excel no cambia resultado (8)

Algo más de información sobre los atajos de teclado F9 para el cálculo en Excel

  • F9 vuelve a calcular todas las hojas de trabajo en todos los libros abiertos
  • Shift + F9 Recalcula la hoja de trabajo activa
  • Ctrl + Alt + F9 vuelve a calcular todas las hojas de trabajo en todos los libros abiertos (recálculo completo)
  • Shift + Ctrl + Alt + F9 Reconstruye el árbol de dependencias y realiza un recálculo completo

¿Alguien sabe cómo puedo obtener una función definida por el usuario para volver a evaluar a sí mismo (sobre la base de datos modificados en la hoja de cálculo)? He probado F9 y Shift + F9 , pero esos no funcionan. Lo único que parece funcionar es editar la celda con la llamada a la función y luego presionar Enter. ¿Algunas ideas? Me parece recordar haber sido capaz de hacer esto ...


De acuerdo, encontré este yo mismo. Puede usar Ctrl + Alt + F9 para lograr esto.


Funciona bien este para actualizar el cálculo mejor que el rango (A: B). Calcule

Public Sub UpdateMyFunctions() Dim myRange As Range Dim rng As Range ''Considering The Functions are in Range A1:B10 Set myRange = ActiveSheet.Range("A1:B10") For Each rng In myRange rng.Formula = rng.Formula Next End Sub


Para cambiar a Automático:

Application.Calculation = xlCalculationAutomatic

Para cambiar a Manual:

Application.Calculation = xlCalculationManual


Si incluye TODAS las referencias a los datos de la hoja de cálculo en la lista de parámetros de la UDF, Excel recalculará su función siempre que los datos a los que se hace referencia cambien:

Public Function doubleMe(d as variant) doubleMe=d*2 end Function

También puede usar Application.Volatile, pero esto tiene la desventaja de hacer que su UDF siempre recalcule, incluso cuando no es necesario porque los datos a los que se hace referencia no han cambiado.

Public Function doubleMe() Application.Volatile doubleMe=Worksheets("Fred").Range("A1")*2 end Function


Application.Volatile no funciona para volver a calcular una fórmula con mi propia función dentro. Utilizo la siguiente función: Application.CalculateFull


Debe usar Application.Volatile en la parte superior de su función:

Function doubleMe(d) Application.Volatile doubleMe = d * 2 End Function

Luego se reevaluará cada vez que el libro de trabajo cambie (si su cálculo está configurado en automático).


Public Sub UpdateMyFunctions() Dim myRange As Range Dim rng As Range ''Considering The Functions are in Range A1:B10 Set myRange = ActiveSheet.Range("A1:B10") For Each rng In myRange rng.Formula = rng.Formula Next End Sub