如何让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
相比具有明显的优势,如果用户打开大量或多个工作簿,可能会导致麻烦。