如何让Excel从VBA中刷新数据表中的数据?

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

以下几行将做到这一点:

ActiveSheet.EnableCalculation = False ActiveSheet.EnableCalculation = True 

编辑:.Calculate()方法将不适用于所有function,我testing它在一个工作表中添加数组函数。 我使用的生产工作表非常复杂,我不想尝试和testing.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 

重新应用select的方程式。

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

这可以根据需要循环。

你也可以试试

 Application.CalculateFull 

要么

 Application.CalculateFullRebuild 

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

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

最后,我发现我所需要的是一个class轮,使得图像在不再设置时消失了:

Application.ScreenUpdating = True

我看到如何更新单个工作表所有打开的工作簿的答案,但不知道如何计算活动工作簿中的所有工作表 ,这正是我所需要的。

我已经testing了这个代码,并做了诀窍。 这里是:

 Sub CalcActiveWbook() Dim wks As Worksheet Application.Calculation = xlManual For Each wks In ActiveWorkbook.Worksheets wks.Calculate Next Set wks = Nothing End Sub 

这与Application.Calculate相比具有明显的优势,如果用户打开大量或多个工作簿,可能会导致麻烦。