目前我正在通过Worksheet.Change在Excel中监听单元格更改事件。 然而,这不会对具有公式的细胞的重新评估值做出反应。 Microsoft在this site上声明工作表类中存在计算事件,但我找不到此事件。只有Calculate()方法。
您对如何倾听重新评估的细胞有什么建议吗?
答案 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
}
}
希望我能帮助这个人。