我有一个函数,我已经实现了一个VBA模块,它将一个单元格作为参数并查询Web服务以返回结果。由于数据来源是远程的,因此该功能可能需要几秒钟才能返回。Excel VBA函数更新仅在更改
问题是某些操作(如删除任何列)似乎会导致每个公式重新计算,即使不需要更改也是如此。当我的工作表有几百行时,这可能需要几分钟的时间,在此期间Excel无响应。
我想找到一些方法来检测,不需要改变,并跳过这一步。我尝试过的一些东西:
- 确定要更改的单元格的当前值,从中可以确定是否需要更新。但是ActiveCell.Value是空白的,并且试图通过单元格本身作为第二个参数会遇到循环引用警告。
- 创建第二列以保存旧的输入值,然后将其传递到函数中并与新值进行比较。但是,函数无法在成功时更新此旧值,并且尝试仅使用公式进行更新总是会遇到循环引用警告。此外,似乎函数不能返回“不变”,所以我需要存储和使用旧的结果。
有什么办法可以防止某些操作更新工作表上的每个公式?
其他要求:
- 有可能禁用所有公式自动计算的方式,但我肯定要各行尽快进入参数小区更新。我也不想强制用户按下按钮来更新功能。
- 我尝试在Visual Studio中执行自定义电子表格,但发现部署太难以维护我的用户群。解决方案必须完全包含在启用宏的工作簿中。
- Excel版本用床单将是2007年和2010年
对于一个固定的输入值,返回值是否会随着时间的推移而变化,还是会被修复?如果它会改变,在什么样的时间范围内? –
您可以使用worksheet_change事件来捕获输入范围中的更改,并直接填充输出单元格,而无需使用工作表公式。 –
所以你说模块中的函数不能直接更新单元格,但是该特定工作表上的重写工作表change事件可以?我理解对吗? –