2010-07-23 5 views
2

추가 처리에서 스프레드 시트를 수정하는 일부 처리를 수행하는 App_SheetChange() 처리기가 있습니다.Excel VBA에서 App_SheetChange에 대한 특정 이벤트를 어떻게 무시합니까?

처리가 종속 된 범위 내에서 사용자 업데이트가 발생하는 경우 처리를 수행하기 위해 처리기를 이미 최적화했습니다 (한 열만).

그러나 사용자가 행을 삭제하거나 행을 삽입 할 때 내 루틴을 실행할 필요가 없습니다.

App_SheetChange()에 대한 호출에서 발생한 변경이 단순히 행을 삽입/삭제했거나 다른 방법으로 행 삽입/삭제가 처음에 App_SheetChange()을 호출하지 않는다는 것을 어떻게 감지 할 수 있습니까? 조금 무거워)?

잠재적으로 중요한주의 사항 : 코드 은 추가 기능 내에서 사용하려면이고 개별 통합 문서에는 매크로 코드를 추가 할 수 없습니다.

답변

2

나는 그것을 할 수있는 방법을 생각할 수 없다.

아마도 UsedRange 또는 CurrentRegion인지 또는 일부이후로 명명 된 범위가 열/행을 잃어 버렸는 지 확인하기위한 대안을 사용할 수 있습니다.

아니면, 당신은 같은 셀의 주소로 열의 각 셀의 .ID을 설정하고, 수있는 App_SheetChangeApplication.Intersect(your_column, Target).IDApplication.Intersect(your_column, Target)의 실제로 사용 주소, 다음 삭제 (삽입)를 나타내지 않는 경우 매크로가 실행되는 대신 열의 각 셀에있는 .ID 속성을 다시 업데이트해야합니다.

+0

네, 여기 있습니다. row.count'와'app_sheetchange()'의 전역 변수를 초기화 할 때'range ("yournamedrange")라는 또 다른 카운트로 확장/축소 된 것을 볼 수 있습니다. '. 그것이 있다면, 아무것도하지 말고, 그렇지 않으면, 당신의 일을하십시오. –

관련 문제