Excel VBA Application.Calculate不起作用,但Ctrl + Alt + F9

时间:2017-06-05 23:03:51

标签: excel vba excel-formula

我在Excel 2013中遇到了一个不寻常的问题。我有一个VBA脚本从SQL中提取数据并生成HTML文件,然后将这些HTML文件导入到制表符中,然后重新计算依赖于之前生成的数据的公式。

这是基本结构:

Sub RefreshData()

Task1 ' run 1st query and generate HTML file
Task2 ' run 2nd query and generate HTML file
.
.
.
Taskn ' run nth query and generate HTML file
RefreshDataInTabs ' refresh all tabs with generated HTML files
Calculate_AllOpenWorkbooks ' calculate all formulas that depend on data obtained in Tasks above

End Sub

这是计算...

的调用
Sub Calculate_AllOpenWorkBooks()

Application.Calculate

End Sub.

所以一切都按预期工作,直到调用Calculate_AllOpenWorkBooks。具有公式的单元格不会更新。在“Excel选项”的“计算选项”窗口中选择“自动”工作簿计算。手动数据 - >刷新全部无效 Ctrl + Alt + F9无效

2 个答案:

答案 0 :(得分:1)

经过多次尝试解决问题后,我最终使用

SendKeys "{F9}"

10 ms延迟,但它有效,您可以在代码中使用它。

如果您愿意,您甚至可以SendKeys "^%{F9}" Ctrl+Alt+F9

答案 1 :(得分:1)

TextInputLayout

,如果您需要应用程序等待:

Sub Calculate_AllOpenWorkBooks()

Application.CalculateFull

End Sub