2010-07-23 48 views
2

我在加載項中有一個App_SheetChange()處理程序,它在修改其電子表格時執行一些處理。如何在Excel VBA中爲App_SheetChange忽略某些事件?

我已經優化了處理程序,只執行處理,如果用戶的更新發生在處理依賴的範圍內(只有一列)。

但是,當用戶刪除行或插入行,我不需要我的例程運行。

我該如何檢測導致致電App_SheetChange()的更改是簡單地插入/刪除一行,或者以某種其他方式確保插入/刪除行不首先調用App_SheetChange()(看起來好像有點霸道)?

一個潛在的重要警告:代碼生活在加載項中,我無法將宏代碼添加到單個工作簿。

回答

2

我想不出有什麼辦法做到這一點。

也許你可以使用一種解決方法來檢查UsedRangeCurrentRegion或某個命名範圍自上次App_SheetChange以來是否丟失了一列/行。

或者,也許,你可以設置在列於同一單元的地址,每個單元的.ID,如果上App_SheetChange的​​並不代表Application.Intersect(your_column, Target)的實際工作地址,然後刪除(插入)已經發生,而不是運行你的宏,你應該再次更新列中每個單元格的.ID屬性。

+0

是的,這裏也一樣。您可以初始化'range(「yournamedrange」),row.count'和'app_sheetchange()'的全局變量以查看是否用另一個range(「yournamedrange」)計數來擴展/縮小。row.count '。如果有的話,什麼也不做,否則,做你的事。 – 2010-07-24 02:07:00