如何在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
Calculate
能起作用,但 EnableCalculation
却无效。 - hoang tranActiveSheet.EnableCalculation = True
Cells(RowA,ColB).Formula = Cells(RowA,ColB).Formula
Application.CalculateFull
或者
Application.CalculateFullRebuild
如果您不介意重建所有打开的工作簿,而不仅仅是活动工作表,请使用CalculateFullRebuild
。此选项还会重建依赖关系。
在数据连接更新后,一些UDF未能执行。我正在使用一个子程序,尝试重新计算单个列:
Sheets("mysheet").Columns("D").Calculate
Application.Calculation = xlManual
DoEvents
For Each mycell In Sheets("mysheet").Range("D9:D750").Cells
mycell.Formula = mycell.Formula
Next
DoEvents
Application.Calculation = xlAutomatic
EnableCalculation
属性是个好主意,因为它允许在工作表级别上重新计算单个工作表。相比之下,Application.CalculateFull
会强制对所有数据进行完整的计算,不仅限于单个工作表或工作簿,而是包括所有打开的工作簿!这可能会导致过度计算,特别是当用户打开了几个不相关的、潜在复杂的工作簿时。 - drwatsoncode