我在Excel中有一个表,我想在用户修改单元格值时检测更改。为了反映这些特定的变化,我需要知道细胞位置和旧细胞值。我能够在Excel VBA / COM加载项中实现这一点,但不能使用JavaScript。
答案 0 :(得分:3)
此时没有任何直接的方法来获取位置和旧单元格值。但是有一些解决方法可以使用,直到有更好的方法:
- 跟踪用户表的内容:您可以在第一次链接到加载项时获取整个表。添加绑定并侦听BindingDataChanged事件以检测更新。每次有更新时,您都可以手动将其与自己的副本进行比较。重新启动加载项后,您可以使用Settings对象重新初始化内存中的副本。
- 使用BindingSelectionChanged事件和Document.SelectionChanged事件跟踪用户在表格中的选择。然后,每当表中的数据发生变化时,使用保存的BindingSelectionChangedEventArgs确定用户进行更改时选择了哪个单元格。请注意,即使用户什么都不做,也可能发生对表的更改 - 例如,另一个加载项可能会更改内容。另请注意,BindingSelectionChangedEventArgs报告用户选择更改后的最终位置,而不是初始位置,因此每当用户更改单元格时,您都需要使用倒数第二个位置,但要将其选择保留在表格中。
此外,您可能实际上不需要使用上面的解决方法,具体取决于您的加载项正在执行的操作:例如,如果表很小,您可以在发生更改时完全覆盖必要的列。
-Michael(加载项团队的项目经理)