¿Alguien sabe cómo puedo obtener una función definida por el usuario para reevaluarse a sí misma (según los datos modificados en la hoja de cálculo)? He intentado F9 y Shift +F9, pero los que no trabajo. Lo único que parece funcionar es editar la celda con la llamada a la función y luego presionar Enter. ¿Algunas ideas? Parece que recuerdo haber podido hacer esto ...Actualizar Excel Función VBA Resultados
Respuesta
Debe utilizar Application.Volatile
en el comienzo de su función:
Function doubleMe(d)
Application.Volatile
doubleMe = d * 2
End Function
A continuación, volver a evaluar cada vez que cambia libro (si su cálculo se establece en Automático).
De acuerdo, encontré este yo mismo. Puede usar Ctrl + Alt + F9 para lograr esto.
Esta es su única opción si tiene Excel 2007 ya que se añadió el método 'Application.Volatile' de 2010 Office –
Algunos más información sobre los métodos abreviados 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 vuelve a calcular la hoja de cálculo activa
- Ctrl + Alt + F9 vuelven a calcular todas las hojas de trabajo en todos los libros abiertos (actualización completa)
- Shift + Ctrl + Alt + F9 Reconstruye el árbol de dependencias y hace un nuevo cálculo completo
Si se incluye TODAS las referencias a los datos de la hoja de cálculo en la lista de parámetros UDF Excel recalculará su función cada vez que cambien los datos a los que se hace referencia:
Public Function doubleMe(d as variant)
doubleMe=d*2
end Function
También puede utilizar Application.Volatile, pero esto tiene la desventaja de hacer su UDF siempre vuelve a calcular, incluso cuando no es necesario porque los datos de referencia no ha cambiado.
Public Function doubleMe()
Application.Volatile
doubleMe=Worksheets("Fred").Range("A1")*2
end Function
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
Por favor, explique el código un poco. Aumentaría la utilidad bastante. – Trilarion
rng.Formula = rng.Fórmula es lo mismo que ingresar una celda y presionar enter nuevamente. Obliga a Excel a calcular nuevamente la celda, incluidas las funciones personalizadas. –
Funciona bien éste para actualizar el cálculo mejor que 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
El Application.Volatile
no funciona para volver a calcular una fórmula con mi propia función dentro. Puedo utilizar la siguiente función: Application.CalculateFull
- 1. Subcadena de Excel VBA
- 2. Excel VBA - xlDown
- 3. OnClick en Excel VBA
- 4. matriz en Excel VBA
- 5. Excel VBA Colón
- 6. VBA cambia Excel 2002 -> Excel 2007
- 7. Crear una función de hoja personalizada en Excel VBA
- 8. La función Dir() no funciona en Mac Excel 2011 VBA
- 9. Función de hash de contraseña para Excel VBA
- 10. ¿Cómo programar código una función 'deshacer' en Excel-Vba?
- 11. Función Excel VBA para imprimir una matriz en el libro
- 12. Función de Excel VBA que devuelve una matriz
- 13. VBA equivalente a la función de mod de Excel
- 14. Función Dir en Excel 2010 VBA no funciona
- 15. Función de llamada a Excel VBA con nombre de variable
- 16. ¿Puede una función de VBA en Excel devolver un rango?
- 17. Renombrar archivos con Excel VBA
- 18. Excel VBA - salida de bucle
- 19. Excel VBA Regex Match Position
- 20. excel vlookup con resultados múltiples
- 21. Excel vba: tipo rango y celda
- 22. Excel vba - cadena de conversión al número
- 23. Documentación para macros VBA de Excel
- 24. derretir/remodelar en excel usando VBA?
- 25. ¿Cómo se obtiene Excel para actualizar los datos en la hoja desde dentro de VBA?
- 26. Cerrar la aplicación de Excel usando VBA
- 27. objeto de error Requerido Excel VBA
- 28. LIFO (Apilado) Algoritmo/Clase para Excel VBA
- 29. Excel VBA Si WorkSheet ("wsName") Existe
- 30. Filtrar tabla dinámica de Excel utilizando VBA
Eso es impresionante, yo no sabía que, gracias un montón –
Gracias, acaba de golpear mi cabeza contra un escritorio sobre esto. Debe señalar, sin embargo, que en Excel 2010, debe pasar True a Application.Volatile, es decir 'Application.Volatile True'. – mdm
GRACIAS. TÚ. ¡Te compraría cerveza si pudiera! –