Hacer que Excel actualice los datos en la hoja desde dentro de VBA

¿Cómo se obtienen los datos de la hoja de cálculo en Excel para volver a calcularse desde VBA, sin la necesidad de simplemente cambiar el valor de una celda?

Las siguientes líneas harán el truco:

ActiveSheet.EnableCalculation = False ActiveSheet.EnableCalculation = True 

Editar: El método .Calculate () no funcionará para todas las funciones, lo probé en una hoja con funciones de conjunto adicionales. 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 funcionar…

 'recalculate all open workbooks Application.Calculate 'recalculate a specific worksheet Worksheets(1).Calculate ' recalculate a specific range Worksheets(1).Columns(1).Calculate 

Algunas veces Excel tendrá problemas y necesita un kick-start para volver a aplicar una ecuación. Esto sucede en algunos casos cuando usa fórmulas personalizadas.

Asegúrese de tener la siguiente secuencia de comandos

 ActiveSheet.EnableCalculation = True 

Vuelva a aplicar la ecuación de elección.

 Cells(RowA,ColB).Formula = Cells(RowA,ColB).Formula 

Esto se puede bifurcar según sea necesario.

También puedes probar

 Application.CalculateFull 

o

 Application.CalculateFullRebuild 

si no le importa reconstruir todos los libros de trabajo abiertos, en lugar de solo la hoja de trabajo activa. ( CalculateFullRebuild reconstruye las dependencias también).

Tuve un problema al desactivar una imagen de fondo (una marca de agua DRAFT) en VBA. Mi cambio no aparecía (lo cual se realizó con el método Sheets(1).PageSetup.CenterHeader = "" ), así que necesitaba una forma de actualizar. El enfoque ActiveSheet.EnableCalculation hizo el truco en parte, pero no cubrió las celdas no utilizadas.

Al final encontré lo que necesitaba con un trazador de líneas que hizo desaparecer la imagen cuando ya no estaba configurada:

Application.ScreenUpdating = True