我在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无效
答案 0 :(得分:1)
经过多次尝试解决问题后,我最终使用
SendKeys "{F9}"
有10 ms
延迟,但它有效,您可以在代码中使用它。
如果您愿意,您甚至可以SendKeys "^%{F9}"
Ctrl+Alt+F9
。
答案 1 :(得分:1)
TextInputLayout
,如果您需要应用程序等待:
Sub Calculate_AllOpenWorkBooks()
Application.CalculateFull
End Sub