目前,我正在通过Worksheet.Change收听Excel中的单元格更改事件.
但是,这不会对具有公式的单元格的重新评估值产生反应.
Microsoft在this site上声明在工作表类中有一个calculate事件,但是我找不到此事件.只有Calculate()方法.
您对如何聆听重新评估的单元格有什么建议吗?
解决方法:
我设法找到一种对单元格重新计算做出反应的方法:
首先,必须在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
}
}
希望我可以帮助某人.