¿Cómo se obtienen los datos de la hoja de cálculo en Excel para recalcular desde VBA, sin la necesidad de simplemente cambiar el valor de una celda?¿Cómo se obtiene Excel para actualizar los datos en la hoja desde dentro de VBA?
Respuesta
Las siguientes líneas harán el truco:
ActiveSheet.EnableCalculation = False
ActiveSheet.EnableCalculation = True
Editar: El método .Calculate() no funcionarán para todas las funciones, he comprobado en una hoja con funciones de matriz de complemento. La hoja de producción que estoy usando es lo suficientemente compleja. No quiero probar y probar el método .CalculateFull(), así que puede funcionar.
Esto debería hacer el truco ...
'recalculate all open workbooks
Application.Calculate
'recalculate a specific worksheet
Worksheets(1).Calculate
' recalculate a specific range
Worksheets(1).Columns(1).Calculate
ver comentario en mi respuesta –
También puede intentar
Application.CalculateFull
o
Application.CalculateFullRebuild
si no te importa la reconstrucción de todos los libros abiertos, en vez que solo la hoja de trabajo activa. (CalculateFullRebuild
reconstruye las dependencias también.)
A veces, Excel tendrá problemas y necesitará un kick-start para volver a aplicar una ecuación. Esto sucede en algunos casos cuando usa fórmulas personalizadas.
Asegúrese de que tiene la siguiente secuencia de comandos
ActiveSheet.EnableCalculation = True
volver a aplicar la ecuación de elección.
Cells(RowA,ColB).Formula = Cells(RowA,ColB).Formula
Esto se puede enlazar según sea necesario.
Tuve un problema con el apagado de una imagen de fondo (una marca de agua DRAFT) en VBA. Mi cambio no aparecía (que se realizó con el método Sheets(1).PageSetup.CenterHeader = ""
), así que necesitaba una forma de actualizar. El enfoque ActiveSheet.EnableCalculation
en parte hizo el truco, pero no cubrió las celdas no utilizadas.
Al final me encontré lo que necesitaba con un chiste que hizo desaparecer la imagen cuando ya no se fijó: -
Application.ScreenUpdating = True
- 1. Actualizar Excel Función VBA Resultados
- 2. Importación de datos de hoja de cálculo de Excel a otra hoja de cálculo de Excel que contiene VBA
- 3. Redactando datos a SQL desde la hoja de Excel
- 4. Crear una función de hoja personalizada en Excel VBA
- 5. ¿Cómo actualizar los gráficos incrustados de Excel en PowerPoint?
- 6. Los datos de Bloomberg no se completan hasta que finaliza la macro de Excel VBA
- 7. llamando a la función de hoja de cálculo excel desde la celda excel
- 8. Ejecutar la función de Excel VBA cuando se hace clic en la hoja
- 9. pueblan valores únicos en una matriz de VBA desde Excel
- 10. Extraer VBA de una hoja de cálculo de Excel
- 11. ¿Cómo agrego el nombre de la hoja para cada hoja de datos en un archivo XLS generado desde "tablib"?
- 12. ¿Cómo puedo congelar programáticamente la fila superior de una hoja de cálculo de Excel en Excel 2007 VBA?
- 13. Ocultar una hoja de cálculo de Excel con VBA
- 14. Documentación para macros VBA de Excel
- 15. Cómo bloquear los datos en una celda en excel usando vba
- 16. vba: Importación de archivo de texto en la hoja de Excel
- 17. Ponga el código de Excel-VBA en el módulo o la hoja?
- 18. Escribiendo Excel VBA para recibir datos de Access
- 19. Excel VBA obtiene rango de rango seleccionado por el mouse
- 20. Cómo acceder a Checkbox desde VBA en Excel 2007
- 21. Asignación entre archivos Excel y XML - Cómo actualizar desde C#
- 22. ¿Cómo recupero un valor de celda de Excel en VBA como se formateó en la hoja de trabajo?
- 23. matriz en Excel VBA
- 24. Buscar la parte inferior de la hoja de cálculo de Excel en VBA
- 25. ¿Cómo se eliminan las filas en Excel según los criterios que usan VBA?
- 26. Subcadena de Excel VBA
- 27. ¿Se puede declarar un objeto de hoja de cálculo globalmente en Excel VBA?
- 28. ¿Cómo se obtiene una hoja de cálculo para abrir Excel en lugar de una ventana del navegador?
- 29. asincrónicos Descargas de archivos dentro de VBA (Excel)
- 30. ¿Cómo generar XML desde una macro de Excel VBA?
En realidad, hay .Calculate() y .CalculateFull() métodos para eso, en diferentes niveles. – GSerg
He probado Calcular en una hoja, y no todas las funciones en una celda recalculan. También puede hacerlo cambiando el bit 'sucio', pero encontré que esta es la solución más fácil. –
Usar la propiedad 'EnableCalculation' es una buena idea, ya que permite recalcular una sola hoja en el nivel de la Hoja de trabajo. Por el contrario, 'Application.CalculateFull' obliga a un cálculo completo de todos los datos, no solo en una hoja de cálculo o libro de trabajo, sino en ** todos los libros abiertos **. Esto podría ser una gran exageración, especialmente porque el usuario podría tener abiertos varios libros de trabajo potencialmente complicados y no relacionados. – ricovox