我有一个作为 VBA 模块实现的函数,它将一个单元格作为参数并查询 Web 服务以返回结果。由于数据的来源是远程的,这个函数可能需要几秒钟才能返回。
问题是某些操作,例如删除任何列,似乎会导致每个公式重新计算,即使不需要更改。当我的工作表有数百行时,这可能需要几分钟,在此期间 Excel 没有响应。
我想找到一些方法来检测不需要更改并跳过此步骤。我尝试过的一些事情:
- 确定要更改的单元格的当前值,我可以从中确定是否需要更新。但是 ActiveCell.Value 是空白的,并且尝试将单元格本身作为第二个参数传递会遇到循环引用警告。
- 创建第二列来保存旧输入值,然后将其传递给函数并与新值进行比较。但是,函数无法在成功时更新此旧值,并且尝试仅使用公式进行更新总是会遇到循环引用警告。此外,函数似乎不能返回“无变化”,所以我需要存储和使用旧结果。
有什么方法可以防止某些操作更新工作表上的每个公式?
其他需求:
- 可能有一种方法可以禁用所有公式自动计算,但我绝对希望在输入参数单元格后立即更新每一行。我也不想强迫用户按下按钮来更新功能。
- 我尝试在 Visual Studio 中制作自定义电子表格,但发现部署对于我的用户群来说难以维护。解决方案必须完全包含在启用宏的工作簿中。
- 使用工作表的 Excel 版本将是 2007 和 2010。