我知道 Worksheet.Change
事件"Occurs when something changes in the Worksheet cells."据微软称 . 问题是这不是真的 . 它在您编辑单元格时,如果删除单元格的内容,或者删除或插入行或列时触发 .
但是,有许多方法可以在不触发事件的情况下更改工作表,例如,如果工作表中的数据已排序 .
我想出了一种方法来跟踪何时使用Filter函数并且用户更改排序列或方向 . 它涉及定期将工作表属性与其先前的值进行比较,并且它非常混乱和hacky,但它可以工作,所以无论如何 .
但是“数据”选项卡中的“排序”按钮使我无法使用,因为它似乎与任何 Worksheet
属性或事件无关 . 我最好的解决方案并不令人满意 .
请帮忙 .
另一方面,我认为微软现在或多或少地放弃了VSTO,这是错误的吗?
1 回答
如果你想了解VSTO,你应该看看那时的EXCEL对象结构 .
例如,在Excel中,您可以使用宏编辑器记录不同的案例 . 之后,您可以在宏文件中看到Excel的功能 .
在VSTO中,您应该能够使用几乎相同的事件 . 在您的情况下,您可以观看 Workbook_SheetSelectionChange - 事件 . 如果您想知道工作簿中是否有任何更改,您还可以处理Workbook_BeforeClose - Event并检查ActiveWorkbook.Saved - Method是真还是假 .
以下是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)的VSTO-Event的一个小例子