相关疑难解决方法(0)

除非重新输入,否则Excel将使用VBA函数计算公式作为错误

我在工作表中设置了一个简单的if语句,其中if条件是VBA用户定义的函数:

Function CellIsFormula(ByRef rng)
    CellIsFormula = rng(1).HasFormula
End Function
Run Code Online (Sandbox Code Playgroud)

这个功能似乎工作正常:

评估1 评估2

但由于某些原因,我无法弄清楚,该单元正在评估错误.更糟糕的是,在评估公式时,excel将错误归因于不会产生错误的计算步骤:

评估4 评估5 评估6

最重要的是,真正让我感到震惊的是,如果我只是重新输入公式,或强制完全重新计算(Ctrl+ Alt+ F9) - 公式评估没问题!

重新输入公式 计算有效

我已经尝试通过添加Application.Volatile到函数代码使公式变为volatile ,但它没有改变任何东西.刷新计算的其他方法,例如将计算设置为手动然后返回自动,隐藏"重新计算工作表",或仅使用F9Ctrl+ F9不工作,只重新输入公式或Ctrl+ Alt+ F9将导致函数正确重新计算.

更改if语句中引用的其中一个单元格不会解决问题,但是,更改"CellIsFormula"函数引用的单元格确实可以解决问题.每次重新打开工作表时,错误都会恢复.

excel vba user-defined-functions

15
推荐指数
2
解决办法
9560
查看次数

标签 统计

excel ×1

user-defined-functions ×1

vba ×1