2008-09-30 45 views

Respuesta

49

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.

+1

En realidad, hay .Calculate() y .CalculateFull() métodos para eso, en diferentes niveles. – GSerg

+1

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. –

+0

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

14

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 
+1

ver comentario en mi respuesta –

3

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.)

6

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.

2

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

Cuestiones relacionadas