【问题标题】:Is there a possibility to run code before Excel triggers calculation?是否有可能在 Excel 触发计算之前运行代码?
【发布时间】:2020-09-25 09:54:42
【问题描述】:

我使用 office-js 创建了一个自定义函数,它返回一个包含数值和错误值 (#N/A) 的动态数组。由于错误值,Excel 会在每次打开工作簿时触发自定义函数的重新计算(只要返回 #N/A 值)。

是否有可能阻止 Excel 仅为我的自定义函数触发重新计算,或者是否有可能在 Excel 触发重新计算之前运行代码,以便我可以在更新旧值之前读取它们?

【问题讨论】:

    标签: office-js excel-addins


    【解决方案1】:

    感谢提问:)

    • 您可以将计算模式设置为手动以防止出现这种情况。我们在 JavaScript 世界中没有 before 事件,因为我们的事件和 API 旨在异步触发,从而在您的代码运行时为用户提供更多响应。
    • 我还要确保您的函数没有被标记为 volatile(具有每次刷新的行为)。

    在更新之前阅读旧值方面,我很想了解您的方案,如果您愿意的话。这是与我们的产品团队取得联系的好方法。如果可以,请在 Excel 中按照以下说明操作并向我们发送电子邮件:https://support.microsoft.com/en-us/office/how-do-i-give-feedback-on-microsoft-office-2b102d44-b43f-4dd2-9ff4-23cf144cfb11

    • 请务必在说明中注明“致:Office 平台团队:跟进 stackoverflow 问题 64061871”。提交时请告知我,我将能够获取您的联系信息,并可以与我们的产品团队联系以设置演示。

    谢谢!

    【讨论】:

    • 感谢您的回答 :) 我已经考虑将计算模式设置为手动,但由于我的 Excel 工作表中的其他功能,计算模式必须是自动的。如果在打开工作簿时无法阻止重新计算,则在更新旧值之前读取旧值的功能仅被视为一种解决方法。我遇到的问题是,在重新计算时,返回 Excel 工作表的数据可能会发生变化。
    • 因此我想在重新计算之前从 Excel 中获取正确的数据,然后通过自定义函数上的标志来确定我是否写回旧值或可以获取新数据。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-01-17
    • 2012-10-23
    • 1970-01-01
    • 2018-05-15
    • 1970-01-01
    • 2020-05-18
    • 1970-01-01
    相关资源
    最近更新 更多