2012-03-22 3 views
3

삽입 내가 엑셀 ​​VBA를 사용하는 등 같은 worksheet_change 이벤트가있어 : 나는 이름을 변경을 할 때Worksheet_Change 이벤트 제공 런타임 오류 13 - 형식 불일치 행

Private Sub Worksheet_Change(ByVal Target As Range) 
    If Target = Range("rel_type") Then 
     --some code 
    End If 
End Sub 

그 코드가 잘 작동을 범위 "rel_type". 그러나 스프레드 시트의 다른 곳에서 행을 삽입하면 런타임 오류 13 - 형식 불일치 해당 하위 첫 줄에 가져옵니다. 아무도 해결 방법을 알고 있습니까? Worksheet_Change 이벤트에 익숙하지 않아 좋은 문서 (또는 적어도이 오류가 발생하는 이유를 나타내는 설명서)를 찾을 수없는 것 같습니다. 감사.

답변

4

이게 너가하려는거야?

Private Sub Worksheet_Change(ByVal Target As Range) 
    On Error GoTo Whoa 

    If Not Intersect(Target, Range("rel_type")) Is Nothing Then 
     Application.EnableEvents = False 

     '--some code 
    End If 

LetsContinue: 
    Application.EnableEvents = True 
    Exit Sub 
Whoa: 
    MsgBox Err.Description 
    Resume LetsContinue 
End Sub 

후속

그래, 내가 필요 정확히입니다! 감사! 그것은 매력처럼 작동했습니다. Intersect 나 EnableEvents 옵션에 익숙하지 않아서 많은 것을 배웠습니다. 고맙습니다. - rryanp 16 초 전에

교차 : 인터 섹트 방법은 두 개 이상의 교차점을 나타내는 Range 개체를 반환합니다, 범위.

이 링크

주제를 참조하십시오 : 교차 방법 [엑셀 2003 VBA 언어 참조]

링크 : Intersect - MSDN

enableEvents를을 : 당신은 방지하기 위해 EnableEvents 속성을 사용해야합니다 VBA 코드가 시작될 가능성이있는 무한 루프. 이 속성을 False으로 설정하면 VBA가 이벤트를 발생시키지 않고 Worksheet_Change 이벤트는 한 번만 실행됩니다. 또한 다음 번에 이벤트를 정상적으로 호출 할 수있게하려면 항상 EnableEvents 속성을 True으로 설정해야합니다.

HTH

시드

+0

그래, 내가 필요 정확히입니다! 감사! 그것은 매력처럼 작동했습니다. Intersect 나 EnableEvents 옵션에 익숙하지 않아서 많은 것을 배웠습니다. 고맙습니다. – rryanp

+0

@rryanp : 내 정보를 추가로 업데이트 함 :) –