我知道"Occurs when something changes in the Worksheet cells."发生的https://github.com/google/ExoPlayer/issues/5225事件。问题是这不是真的。当您编辑单元格,删除单元格的内容或删除或插入行或列时,它将触发。
但是,有多种方法可以更改工作表而不触发事件,例如,如果对工作表中的数据进行了排序。
我想出了一种方法来跟踪何时使用过滤器功能以及用户更改排序列或方向。它涉及定期将工作表属性与其以前的值进行比较,这确实很杂乱无章,但不管怎样,它都能正常工作。
但是“数据”标签中的“排序”按钮使我难以理解,因为它似乎并不与任何Worksheet.Change
属性或事件有关。到目前为止,我想出的最好的解决方案是定期读取和重新读取单元格块,以手动检查是否有任何更改。这一点都不令人满意。
请帮助。
顺便说一句,我认为微软现在已经或多或少地放弃了VSTO,这是错误的吗?
答案 0 :(得分:0)
如果您想了解VSTO,则应查看EXCEL对象结构。
例如,在Excel中,您可以使用宏编辑器来记录不同的情况。之后,您可以在宏文件中看到Excel的功能。
在VSTO中,您应该能够使用几乎相同的事件。就您而言,您可以观看 Workbook_SheetSelectionChange -事件。 如果您想知道工作簿中是否有任何更改,还可以处理Workbook_BeforeClose-事件,并检查ActiveWorkbook.Saved-方法是对还是错。
这是VSTO-Event for Workbook_BeforeClose的一个小例子 (https://social.msdn.microsoft.com/Forums/office/en-US/9f96e186-dddb-44a9-ac99-ab0ebef846b3/save-workbook-event-in-excel-vsto-application?forum=exceldev)
答案 1 :(得分:0)
查看工作表的计算事件,或者如果使用命名范围,请使用该指定范围的更改事件。