2011-11-14 3 views
3

셀의 일부에 대해 드롭 다운 메뉴를 사용하여 Excel 시트를 설정했습니다. 사용자는 해당 목록에서 값만 선택할 수 있으며 데이터 유효성 검사데이터 유효성 검사 위에 복사 붙여 넣기 셀이 작동하지 않습니다.

오류 경고를 통해 무언가를 입력하면 오류 메시지가 으로 팝업됩니다.

이렇게 잘 작동합니다 ...하지만 사용자가 셀에 붙여 넣기를하면 유효성 검사가 작동하지 않습니다. 복사 붙여 넣기의 경우 유효성 검사를 효과적으로 수행하는 방법. 한 가지 해결책을 찾았지만 발견하지 못했습니다. 다음은 내가 찾은 코드입니다.

http://www.j-walk.com/ss/excel/tips/tip98.htm

Worksheet_Change 화재, 코드 :하지만 어떤 more..It는 항상 내가이 페이지의 코드를했다처럼 보이는

 
Private Sub Worksheet_Change(ByVal Target As Range) 

    If HasValidation(Range(ActiveCell.Address)) Then 
     Exit Sub 
    Else 
     Application.Undo 
     MsgBox "Your last operation was canceled." & _ 
     "It would have deleted data validation rules.", vbCritical 

    End If 
End Sub 

Private Function HasValidation(r) As Boolean 
    On Error Resume Next 
    x = r.Validation.Type 
    If Err.Number = 0 Then HasValidation = True Else HasValidation = False 
End Function 

답변

2

worng 붙여 복사 진정한 enven를 돌려 작동하지 항상 복사/붙여 넣기 작업이 수행되는 대상이 아닌 활성 셀을 나타냅니다.

변경

ActiveCell.Address 

Target.Address 

및 그 작동되는지 확인합니다.

+0

안녕 JP, 그 작동하지 않습니다. 유효성 검사가있는 셀에 잘못된 데이터를 붙여 넣으면 HasValidation 함수는 항상 false를 반환합니다. – user999896

0

"Target.Address"는 @JimmyPena에서 언급 한 것처럼 나를 위해 일했습니다. 그러나 솔루션은 여전히 ​​버그를 가져옵니다. 위에서 언급 한 VB 코드를 추가 한 후에 다른 유효성 검사를 추가하면 사용자가 vb 코드에 의해 생성 된 메시지 상자의 양과 함께 발사됩니다 (즉, . VB 코드가 적용된 셀 수에 대한 VB 코드에서 제공하는 메시지 상자의 "확인"을 클릭해야합니다. 코드가 40 개의 셀에 적용된 경우 "확인"을 40 번 클릭해야합니다. .. phew ..) 다른 상황을 추가하여 도움을 주시겠습니까? 또는 모든 유효성 검사를 추가 한 후 VB 코드 만 추가하는 마지막 방법.

관련 문제