VBA:更新后无法自动重新计算 Excel 公式 - 需要手动交互

Posted

技术标签:

【中文标题】VBA:更新后无法自动重新计算 Excel 公式 - 需要手动交互【英文标题】:VBA: cannot automatically recalculate Excel formula after updating it -- needs manual interaction 【发布时间】:2013-01-16 14:59:28 【问题描述】:

在 VBA 中,我正在更新单元格中的公式(可以正常工作),但自动重新计算不起作用:

updated_formula = "=COUNT(Sheet1!A3:A" & nr_points & ")"
Cells(x, y).Formula = updated_formula
ActiveWorkbook.Save
Cells(x, y).Calculate

该公式只是计算另一个工作表中现有行的数量。当我运行宏时,函数文本字段中单元格的值是正确的,但在单元格本身中我有"#NAME?",我需要在函数中按 ENTER 来重新计算公式。

我是否对 Excel 期望过高?还是我做错了什么?

编辑:情况的屏幕截图——这是我在运行宏后看到的。 (抱歉黑屏,必须为客户公司保持匿名)

【问题讨论】:

Cells(x, y) 在哪张表中? @Siddharth 它在与 Sheet1 不同的工作表中,但在同一个 Excel 文件中。我正在用屏幕截图更新帖子,也许它会使我的描述更清晰。 不,没关系。我假设它在同一张纸上。代码没有问题。它应该可以工作......也许我错过了什么......让我再看看...... 什么是ANZAHL?我还以为是COUNT 试试这个.. 将Cells(x, y).Formula = updated_formula 更改为Cells(x, y).FormulaLocal = updated_formula 是否有效? 【参考方案1】:

看了你的截图,就明白了。

改变

Cells(x, y).Formula = updated_formula

Cells(x, y).FormulaLocal = updated_formula

【讨论】:

+1 为了清晰和理解 OP 需要什么... ;)【参考方案2】:

您的代码在我的工作表上运行良好,并在宏运行后立即更新计算值。请确保将计算选项设置为“自动”:功能区数据选项卡>计算选项>自动。

【讨论】:

也许这很重要 - 我使用的是 Excel 2007。 谢谢,它已在 cmets 中解决:我使用的是德语版的 Excel,由于将 Excel 函数本地化的愚蠢决定,我不得不使用 FormulaLocal 而不是 Formula。这只是由这些愚蠢的本地化函数引起的一系列问题中的最新问题! @Cristina 很高兴知道你解决了,Siddharth Rout - 感谢您的建议 - 这对我来说是一个很好的经验,以备将来使用! 这里的寓意:每当您使用非英语 Excel 时,请睁大眼睛寻找额外的“乐趣”:-)【参考方案3】:

我知道这是一篇迟到的帖子,但我遇到了类似的问题,对我有用的是改变

Cells(x, y).Calculate

Cells(x, y).Dirty

【讨论】:

以上是关于VBA:更新后无法自动重新计算 Excel 公式 - 需要手动交互的主要内容,如果未能解决你的问题,请参考以下文章

VBA Excel UDF保留原始值

LibXL:打开 MS excel 文件时如何强制重新计算公式?

Excel VBA:通过突出显示颜色重新计算UDF总和

poi 导出excel2007的时候,自动执行excel中的公式?

无法粘贴 - Excel VBA

Excel数据量太大,用VBA运算依然会耗时太久,运行很慢,该怎么办?