【问题标题】:Excel for Mac - Cells containing user-defined functions won't updateExcel for Mac - 包含用户定义函数的单元格不会更新
【发布时间】:2013-08-07 18:28:01
【问题描述】:

我正在编写一些 VBA 代码,该代码将包含用户定义函数 (UDF) 的公式写入我工作簿的某些单元格,例如:H1004 = maxdd(H1:H1001)

当我在 Excel 2010(适用于 Windows) 中运行代码时,一切正常:

1) 将公式写入单元格
2) 每个单元格都返回正确的结果。

当我在 Excel 2011 for Mac 中运行相同的代码时,公式也会写入单元格中。但是,单元格不会返回任何有效结果 - 而是显示 #value 错误。

注意:我无法解决此问题,因为当我选择其中一个单元格时,将光标放在公式字段中,然后按回车键(可能是强制单元格计算),正确答案出现了。


我的问题:

  • 需要做些什么来防止 Excel for Mac 返回 #value 错误而不是简单的结果?

【问题讨论】:

  • 我不确定这是否会导致您的项目出现问题(不知道您在做什么的细节),但您可以尝试将Application.Volatile 添加到函数的 VBA 代码的开头。这将导致 Excel 在每次重新计算工作表时重新计算 UDF。
  • @Excellll 我已经尝试过Application.VolatileApplication.CalculateFull...它仍然给了我错误。
  • 尝试在Mac上一一做你的maxdd函数中的操作,看看是哪个操作导致了value错误。
  • @Joop maxdd 函数本身是完美的——当我手动将它输入到单元格时,单元格将立即返回正确的结果。 #value 错误仅在我让 vba 代码“键入”到单元格时出现。另外:vba 代码中不可能真的有错误,因为相同的过程在 Windows 上完美运行。
  • 能否发布一些maxdd代码的示例代码,以便我们进行故障排除?

标签: macos worksheet-function vba


【解决方案1】:

我终于弄清楚是什么导致了这个问题,虽然我不知道为什么它导致了这个问题:

为了让vba代码运行得更快,我在代码开头关闭了automatic calculation,在代码结尾又重新开启,就像这样-->

Application.Calculation = xlCalculationManual  
'main part of vba code
Application.Calculation = xlCalculationAutomatic

由于某种原因,这使包含用户定义函数的单元格无法更新。
没有这两行代码,现在一切正常。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-12-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多