2008-09-30 109 views

回答

49

下面几行就可以了:

ActiveSheet.EnableCalculation = False 
ActiveSheet.EnableCalculation = True 

编辑:.Calculate()方法不适用于所有的功能工作,我测试了它与外接阵列功能的片材。我使用的生产工作表非常复杂,我不想尝试和测试.CalculateFull()方法,因此它可能工作。

+1

其实,有.Calculate()和.CalculateFull()方法在不同的层面上。 – GSerg 2008-09-30 19:15:47

+1

我已经测试了在工作表上计算,并不是所有函数都在单元格中重新计算。您也可以通过切换'脏'位来实现,但我发现这是最简单的解决方案。 – 2008-09-30 19:26:41

14

这应该做的伎俩......

'recalculate all open workbooks 
Application.Calculate 

'recalculate a specific worksheet 
Worksheets(1).Calculate 

' recalculate a specific range 
Worksheets(1).Columns(1).Calculate 
3

您也可以尝试

Application.CalculateFull 

Application.CalculateFullRebuild 

,如果你不介意重建所有打开的工作簿,而不仅仅是活动工作表。 (CalculateFullRebuild也会重建相关性。)

6

有时候Excel会打嗝,需要重新启动才能重新应用等式。这在使用自定义公式的某些情况下会发生。

请确保您有以下脚本

ActiveSheet.EnableCalculation = True 

再涂选择的方程。

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

然后这可以根据需要循环。

2

我在关闭VBA中的背景图像(DRAFT水印)时遇到了问题。我的变化没有显示出来(这是用Sheets(1).PageSetup.CenterHeader = ""方法执行的) - 所以我需要一种刷新方式。 ActiveSheet.EnableCalculation的方法部分做到了这一点,但没有涵盖未使用的单元格。

我到底发现了什么,我需要一个衬里,其取得的图像消失,当它不再设置: -

Application.ScreenUpdating = True

相关问题