2016-08-31 2 views
0

userform 내의 버튼에서 서브 루틴을 실행할 때 Excel에서 이상한 오류가 발생합니다.VBA - userform 내에서 함수를 호출하면 이상한 오류가 발생합니다.

이 양식의 목적은 긴 제품 목록과 세부 정보에 새 제품을 삽입하는 것입니다. 호출되는 서브 루틴은 제품 목록 내의 범위를 선택하고 해당 범위의 삽입 메소드를 호출합니다.

이 서브 루틴이 실행되면 Excel이 매우 이상하게 작동합니다. 셀을 선택하고 오는 문자를 입력 한 다음 Enter 키를 누르면 셀이 업데이트되지 않습니다. 제품 목록 시트를 수정할 수 없으며 창 오른쪽 상단의 X를 눌러 Excel을 종료 할 수도 없습니다. 경우에 따라 다른 시트의 행이 이동하는 경우가 있습니다.

Excel이 다시 반응 형이되는 유일한 방법은 다른 시트로 이동하여 모든 것을 똑바로 세우는 것처럼 보이는 셀을 수정하는 것입니다.

시트의 단추 또는 매크로 메뉴에서 동일한 서브 루틴을 실행할 때 문제가 발생하지 않습니다.

여기에 무슨 일이 일어나고 있는지에 대한 제안이 있으십니까?

답변

0

Selection.ShapeRange.Name을 사용하면 선택한 모양의 이름을 가져올 수 있습니다. Selection.ShapeRange에 name 속성이 없으면 throw되는 Error 5 'Invalid procedure call or argument을 트랩해야합니다.

 

    Dim ShapeName As String 

    On Error Resume Next 
    ShapeName = Selection.ShapeRange.Name 
    On Error GoTo 0 
    If InStr(ShapeName, "Text Box") Then 
     'Do Something 
    End If 

관련 문제