50

如何在 Excel 中获取电子表格数据以从 VBA 中重新计算自身,而无需更改单元格值?

4

6 回答 6

61

以下几行可以解决问题:

ActiveSheet.EnableCalculation = False  
ActiveSheet.EnableCalculation = True  

编辑:.Calculate()方法不适用于所有功能。我在带有附加数组函数的工作表上对其进行了测试。我正在使用的生产表足够复杂,我不想测试该.CalculateFull()方法,但它可能会起作用。

于 2008-09-30T18:54:58.970 回答
19

这应该可以解决问题...

'recalculate all open workbooks
Application.Calculate

'recalculate a specific worksheet
Worksheets(1).Calculate

' recalculate a specific range
Worksheets(1).Columns(1).Calculate
于 2008-09-30T19:26:59.470 回答
8

有时 Excel 会出现问题,需要重新启动才能重新应用公式。当您使用自定义公式时,在某些情况下会发生这种情况。

确保您有以下脚本

ActiveSheet.EnableCalculation = True

重新应用选择方程。

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

然后可以根据需要循环。

于 2013-09-04T19:11:12.783 回答
6

你也可以试试

Application.CalculateFull

或者

Application.CalculateFullRebuild

如果您不介意重建所有打开的工作簿,而不仅仅是活动工作表。(CalculateFullRebuild也重建依赖项。)

于 2008-09-30T19:52:04.137 回答
3

我在关闭VBA 中的背景图像(草稿水印)时遇到问题。我的更改没有出现(使用Sheets(1).PageSetup.CenterHeader = ""方法执行) - 所以我需要一种刷新方法。该ActiveSheet.EnableCalculation方法部分起到了作用,但没有涵盖未使用的单元格。

最后,我找到了我需要的一个衬里,它使图像在不再设置时消失:-

Application.ScreenUpdating = True

于 2014-12-02T17:28:11.233 回答
0

数据连接更新后,某些 UDF 未执行。使用子程序,我试图重新计算一个列:

Sheets("mysheet").Columns("D").Calculate

但上述声明没有任何效果。上述解决方案都没有帮助,除了 kambeeks 建议替换公式有效并且如果在更新期间手动重新计算打开速度很快。下面的代码解决了我的问题,即使对 OP “kluge” 评论不完全负责,它也提供了一个快速/可靠的解决方案来强制重新计算用户指定的单元格。

Application.Calculation = xlManual
DoEvents
For Each mycell In Sheets("mysheet").Range("D9:D750").Cells
    mycell.Formula = mycell.Formula
Next
DoEvents
Application.Calculation = xlAutomatic
于 2019-06-24T22:28:24.067 回答