2013-02-15 2 views
1

셀렉트 케이스에 문제가 있습니다. 내 프로그램은 명명 된 범위로 작업합니다. 선택 사례가 일련의 명명 된 범위에 없다면 끝내기를 원합니다. 여기에 사용자가 유효한 셀을 선택하면 제대로 실행되고 내 코드입니다 : 그러니까 기본적으로VBA 사용자가 선택한 셀이 일련의 명명 된 범위 내에 있지 않은 경우 끝내기

Private Sub WorkSheet_SelectionChange(ByVal Target As Range) 

If Not Intersect(Target, Range("ActionDisplay")) Is Nothing Then 
    Select Case Target.Column 
     Case 5: Call Find_Action_RPI_Info 
     Case 6: Call Find_Action_RPI_Info 
     Case 7: Call Find_Action_RPI_Info 
     Case 8: Call Find_Action_RPI_Info 
     Case 9: Call Find_Action_RPI_Info 
     Case 10: Call Find_Action_RPI_Info 
     Case 11: Call Find_Action_RPI_Info 
     Case 12: Call Find_Action_RPI_Info 
     Case Else 
    End Select 
End If 

If Not Intersect(Target, Range("ActionTotalDisplay")) Is Nothing Then 
    Select Case Target.Column 
     Case 13: Call Action_Total_RPI_Info 
     Case Else 
    End Select 
End If 

If Not Intersect(Target, Range("TotalDisplay")) Is Nothing Then 
    Select Case Target.Column 
     Case 5: Call CM_Action_Total_RPI_Info 
     Case 6: Call CM_Action_Total_RPI_Info 
     Case 7: Call CM_Action_Total_RPI_Info 
     Case 8: Call CM_Action_Total_RPI_Info 
     Case 9: Call CM_Action_Total_RPI_Info 
     Case 10: Call CM_Action_Total_RPI_Info 
     Case 11: Call CM_Action_Total_RPI_Info 
     Case 12: Call CM_Action_Total_RPI_Info 
     Case Else 
    End Select 
End If 

If Not Intersect(Target, Range("GroupTotal")) Is Nothing Then 
    Select Case Target.Column 
     Case 13: Call GroupDisplay 
    Case Else 
    End Select 
End If 


If Not Intersect(Target, Range("PastDue")) Is Nothing Then 
    Select Case Target.Column 
     Case 7: Call PastDueDisplay 
     Case 8: Exit Sub 
     Case 9: Call PastDueDisplay 
     Case 10: Exit Sub 
    Case Else 
    End Select 
End If 

If Not Intersect(Target, Range("PastDueTotal")) Is Nothing Then 
    Select Case Target.Column 
     Case 7: Call PastDueTotalDisplay 
     Case 8: Exit Sub 
     Case 9: Call PastDueTotalDisplay 
     Case 10: Exit Sub 
    Case Else 
    End Select 
End If 


End Sub 

경우가없는 나는 프로그램이 종료 할 상기 범위의있다. 나는 시도하고있는 것을 할 수있는 더 좋은 방법이 있다고 확신하지만이 모든 것을 스스로 가르쳐서 완벽하지는 않을 것이라고 확신합니다.

답변

1

당신은 당신을 감사이 깨끗 같은 것을 (안된를)

Private Sub WorkSheet_SelectionChange(ByVal Target As Range) 
    If Not Intersect(Target, Range("ActionDisplay")) Is Nothing Then 
     Select Case Target.Column 
      Case 5 To 12: Call Find_Action_RPI_Info 
     End Select 
    ElseIf Not Intersect(Target, Range("ActionTotalDisplay")) Is Nothing Then 
     If Target.Column = 13 Then Call Action_Total_RPI_Info 
    ElseIf Not Intersect(Target, Range("TotalDisplay")) Is Nothing Then 
     Select Case Target.Column 
      Case 5 To 12: Call CM_Action_Total_RPI_Info 
     End Select 
    ElseIf Not Intersect(Target, Range("GroupTotal")) Is Nothing Then 
     If Target.Column = 13 Then Call GroupDisplay 
    ElseIf Not Intersect(Target, Range("PastDue")) Is Nothing Then 
     Select Case Target.Column 
      Case 7, 9: Call PastDueDisplay 
     End Select 
    ElseIf Not Intersect(Target, Range("PastDueTotal")) Is Nothing Then 
     Select Case Target.Column 
      Case 7, 9: Call PastDueTotalDisplay 
     End Select 
    End If 
End Sub 
+0

시도 할 수 있습니다. 내가 그 부분을 주목 한 것 : 과거를위한 끝에, 그 부분은 이제는 발전하지 못합니다. 그것은 유익한 출입구. 이유를 아는 것이 일어 났습니까? 7, 9에 칼럼을 썼나? – user2044180

+0

열 번호가 7 또는 9가 아닌 경우 아무 것도 수행하지 않고 단순히 하위 –

+0

을 종료합니다. 내 오류 확인을 위해 나중에 코드에서 수행해야합니다. 아프다. 내 Selection Error 체크와 함께 내가 사용자가 하나의 셀을 선택하는지 확인한다. 'IF selection.cells.count> 1 then end'이 (가) 강제로 실행 중일 수 있습니다. – user2044180