這是我想用Excel插件實現的。 Excel用戶選擇一個範圍並刪除它。我想在該範圍內將單元格數據(無論他刪除)寫入日誌文件。關於SO的多個問題表明,您無法在SheetChange事件處理程序中刪除範圍,您需要將其存儲。我將範圍存儲在選擇更改事件方法處理程序中的全局變量LastRange
中。我需要SheetChange事件處理程序中的LastRange
。獲取Excel中刪除的範圍
的問題是我得到的COM例外 - 已從其基礎RCW分開,不能使用
COM對象。
我知道某處LastRange
被釋放,因此是例外。 我提到了另一個SO問題here。即使我有強烈的參考代表,問題依然存在。
private ADXExcelSheet_EventHandler sheetChangeEventHandler;
private ADXExcelSheet_EventHandler sheetSelectionChangeEventHandler;
private void InitializeComponent()
{
sheetChangeEventHandler = new AddinExpress.MSO.ADXExcelSheet_EventHandler(SheetChange);
excelEvents.SheetChange += sheetChangeEventHandler;
sheetSelectionChangeEventHandler = new ADXExcelSheet_EventHandler(SheetSelectionChange);
excelEvents.SheetSelectionChange += sheetSelectionChangeEventHandler;
}
//....
Range LastRange;
public void SheetSelectionChange(object sender, object sheet, object range)
{
LastRange = (range as Range);
}
public void SheetChange(object sender, object sheet, object range)
{
ClassX.Method1(range as Range, LastRange);
}
不確定爲什麼LastRange
在Method1中仍爲null。 LastRange
正確地從SheetChange傳遞到Method1()
。任何其他想法得到這個工作?
是從addinexpress excelEvents東西? Application.SheetSelectionChange事件處理程序有點不同 – Slai
是的。 excelevents來自Addinexpress – user1
看起來像Add-in Express在事件處理程序完成後立即釋放傳遞給事件處理程序的所有COM對象。任何解決方法?我想存儲刪除的範圍對象,並將其重用到不同的事件處理程序中。 – user1