Мы создаем надстройку C # Excel и хотим перехватить событие изменения рабочего листа. Мы сделали следующее:
private static DocEvents_ChangeEventHandler EventDel_CellsChange;
private void ThisAddIn_Startup(object sender, System.EventArgs e)
{
this.Application.WorkbookOpen += Application_WorkbookOpen;
EventDel_CellsChange = new DocEvents_ChangeEventHandler(WorksheetChangeEventHandler);
}
public void Application_WorkbookOpen(Workbook Doc)
{
Sheets asp = Doc.Worksheets;
foreach(Worksheet hoja in asp)
{
hoja.Change += EventDel_CellsChange;
}
}
public void WorksheetChangeEventHandler(Range Target)
{
MessageBox.Show("Cell has changed");
}
Когда мы открываем первую книгу, запускается код (появляется сообщение Ячейка изменена). Когда мы открываем второй (не закрывая первый), сообщение не появляется (WorksheetChangeEventHandler не выполняется) ни в одной книге, но код в Application_WorkbookOpen всегда выполняется, хотя.
Есть идеи, как перехватить событие изменения рабочего листа, когда открыты две книги?