我正在自动化工作表并在 vba 中调用:
sheet_name.calculate
问题是这似乎没有更新我的一些依赖于对财务插件的 API 调用的单元格。它们仍然包含#VALUE!
但是,如果我在同一张纸上按“shift + f9”,那么所有包含#VALUE!
突然刷新的单元格并包含正确的数值。
为什么 .calculate 不这样做呢?
(我的计算更新设置设置为“手动” - 这是因为我不想自动更新,只有当我的代码调用 .calculate 时才决定)
尝试
Application.CalculateFull
http://msdn.microsoft.com/en-us/library/office/ff194064.aspx
如果这不起作用,也许这会有所帮助 - 它确保重建所有依赖项
Application.CalculateFullRebuild
http://msdn.microsoft.com/en-us/library/office/ff822609.aspx
我个人没有发现 worksheets("SheetName").Calculate 和 shift-f9 之间的任何区别 - 但可能值得尝试一下:
Worksheets("SheetName").EnableCalculation=False
Worksheets("SheetName").EnableCalculation=True
Worksheets("SheetName").Calculate
这会强制对工作表进行完整计算,而不是重新计算。