如何忽略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的计数。如果有,什么也不做,否则,做你自己的事。