题
如何在Excel中获取电子表格数据,以便在VBA内重新计算,而不会仅仅更改单元格值?
解决方案
以下几行可以解决问题:
ActiveSheet.EnableCalculation = False
ActiveSheet.EnableCalculation = True
编辑: .Calculate()
方法不适用于所有功能。我在带有附加数组函数的工作表上测试了它。我正在使用的生产单很复杂,我不想测试 .CalculateFull()
方法,但它可能有效。
其他提示
这应该可以解决问题......
'recalculate all open workbooks
Application.Calculate
'recalculate a specific worksheet
Worksheets(1).Calculate
' recalculate a specific range
Worksheets(1).Columns(1).Calculate
有时Excel会打嗝并需要一个启动才能重新应用等式。在某些情况下,当您使用自定义公式时会发生这种情况。
确保您拥有以下脚本
ActiveSheet.EnableCalculation = True
重新应用选择方程式。
Cells(RowA,ColB).Formula = Cells(RowA,ColB).Formula
然后可以根据需要循环。
您也可以尝试
Application.CalculateFull
或
Application.CalculateFullRebuild
如果您不介意重建所有打开的工作簿,而不仅仅是活动工作表。 ( CalculateFullRebuild
也会重建依赖项。)
我在VBA中关闭背景图像(DRAFT水印)时出现问题。我的更改没有显示(使用 Sheets(1).PageSetup.CenterHeader =""
方法执行) - 所以我需要一种方法来刷新。 ActiveSheet.EnableCalculation
方法部分地解决了这个问题,但没有涵盖未使用的单元格。
最后,我找到了我需要的一个衬垫,当它不再被设置时使图像消失: -
Application.ScreenUpdating = True
更新数据连接后,某些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
不隶属于 StackOverflow