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