如何忽略Excel VBA for App_SheetChange中的某些事件?

如何忽略Excel VBA for App_SheetChange中的某些事件?,excel,excel-2003,vba,Excel,Excel 2003,Vba,我在外接程序中有一个App\u SheetChange()处理程序,它在修改电子表格时进行一些处理 我已经优化了处理程序,使其仅在用户的更新发生在处理所依赖的范围内(仅一列)时执行处理 但是当用户删除行或插入行时,我不需要运行例程 我如何才能检测到导致调用App\u SheetChange()的更改只是插入/删除一行,或者以其他方式确保插入/删除行不会首先调用App\u SheetChange()(这似乎有点笨手笨脚) 一个潜在的重要警告是:代码必须存在于外接程序中,我不能将宏代码添加到单个工作

我在外接程序中有一个
App\u SheetChange()
处理程序,它在修改电子表格时进行一些处理

我已经优化了处理程序,使其仅在用户的更新发生在处理所依赖的范围内(仅一列)时执行处理

但是当用户删除行或插入行时,我不需要运行例程

我如何才能检测到导致调用
App\u SheetChange()
的更改只是插入/删除一行,或者以其他方式确保插入/删除行不会首先调用
App\u SheetChange()
(这似乎有点笨手笨脚)


一个潜在的重要警告是:代码必须存在于外接程序中,我不能将宏代码添加到单个工作簿中。

我想不出任何方法

也许您可以使用一种变通方法,比如检查
UsedRange
,或者
CurrentRegion
,或者自上次
App\u SheetChange
以来某个命名范围是否丢失了一列/行


或者,您可以将列中每个单元格的
.ID
设置为同一单元格的地址,如果在
应用程序中更改
应用程序.Intersect(您的列,目标)。ID
不代表
应用程序.Intersect(您的列,目标)
,则删除(插入)已经发生,您应该再次更新列中每个单元格的
.ID
属性,而不是运行宏。

是的,这里也一样。您可以初始化
范围(“yournamedrange”).row.count的全局变量,并在
应用程序的sheetchange()
上查看是否扩展/收缩了另一个
范围(“yournamedrange”).row.count的计数。如果有,什么也不做,否则,做你自己的事。