Excel C#事件用于重新计算的单元格值

时间:2014-06-18 10:35:24

标签: c# excel events

目前我正在通过Worksheet.Change在Excel中监听单元格更改事件。 然而,这不会对具有公式的细胞的重新评估值做出反应。 Microsoft在this site上声明工作表类中存在计算事件,但我找不到此事件。只有Calculate()方法。

您对如何倾听重新评估的细胞有什么建议吗?

1 个答案:

答案 0 :(得分:3)

我设法找到了一种对细胞重新计算做出反应的方法:

首先要在Workbook.SheetCalculate事件中注册,因为在工作表级别没有这样的事件。

此事件返回已重新计算单元格的工作表。重要提示:它不会返回重新计算的单元格,而是返回所有单元格。

从这一点开始,我迭代这些单元格并寻找公式及其值。

注册参加活动:

workbook.SheetCalculate += new Microsoft.Office.Interop.Excel.WorkbookEvents_SheetCalculateEventHandler(CalculateEvent);

计算事件如下所示:

private void CalculateEvent(Object Sh)
{
    if (!(Sh is Workbook))
        return;

    Worksheet s = Sh as Worksheet;
    Range range = s.UsedRange;

    foreach(Range cell in range.Cells)
    {
        string formula = Convert.ToString(cell.Formula);

        if(formula.IndexOf('=') >= 0)
            //Do something
    }
}

希望我能帮助这个人。