Событие изменения листа Excel не запускается, когда открыты две книги - PullRequest
0 голосов
/ 18 января 2019

Мы создаем надстройку 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 всегда выполняется, хотя.

Есть идеи, как перехватить событие изменения рабочего листа, когда открыты две книги?

1 Ответ

0 голосов
/ 18 января 2019

Вам необходимо создать и деинсталлировать каждый экземпляр рабочей книги, а затем поработать над рабочим листом каждого. Вам также необходимо активировать рабочую книгу, над которой вы работаете.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...