2016-10-21 4 views
0

안녕하십니까. 내가 만든 목록에서 셀에 정확히 동일한 데이터를 입력 할 수있는 코드를 작성하는 방법을 알아 내려고 노력하고 있습니다. 코드에서 사용자 항목의 유효성을 검사하고 항목이 목록에 있는지 확인하고 사용자가 입력 한 데이터를 지우지 않고 메시지를 제공하는지 확인합니다. 나는 거의 다 왔지만 Vlook 작업을하지 않는 것 같습니다. 어떤 도움이라도 대단히 감사 할 것입니다. 아래에있는 코드는 내가 작성한 코드입니다.사용자가 잘못된 데이터를 셀에 입력하지 못하도록하는 VBA 코드 Excel

Option Explicit 
Private Sub Worksheet_Change(ByVal Target As Excel.Range) 
    Dim rng As Range 
    Dim aCell As Range 
    Dim LU As Range 
    Dim Celda As Range 


' 
    On Error GoTo Whoa 
    Application.EnableEvents = False 
'~~> This is the range of cells where I want the user to input the data 
    Set rng = Range("A1:A15") 

    'THis is the range where I want the macro to look if the data the user entered is in the list 
    Set LU = Application.WorksheetFunction.VLookup(aCell.Value, Range("F1:F5"), 1, False) 


On Error GoTo MyErrorHandler: 
If Not Application.Intersect(Target, rng) Is Nothing Then 
     '~~> Loop through all cells in the range 
     For Each aCell In rng 
      If aCell.Value <> "" Then 
       If aCell.Value <> LU Then 
        aCell.ClearContents 

MyErrorHandler: 
If Err.Number = 1004 Then 
aCell.ClearContents 
MsgBox "Item Number es Incorrecto - Error en la celda " & aCell.Address 

       End If 
       End If 
      End If 
      Next 
     End If 


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


End Sub 
+2

데이터 유효성 검사에서 VBA를 정확하게 사용하는 이유는 무엇입니까? – nbayly

+0

유효성 검사 목록을 사용하지 않는 이유는 무엇입니까? http://www.contextures.com/xlDataVal01.html – RCaetano

+1

@nbayly 15 초 빠르게 xD – RCaetano

답변

0

목록에서 허용으로 설정된 데이터 - 데이터 유효성 검사를 사용하십시오. 출처 : =$F$1:$F$5. 필요에 맞게 옵션을 사용자 정의하십시오. VBA가 필요하지 않습니다.

+0

사용자가 복사 붙여 넣기를 수행하고 지울 수 있기 때문에 데이터 유효성 검사를 사용하고 싶지 않습니다. 데이터 유효성 검사. 또한 내가 검증하고자하는 목록에는 선택 목록에서 아래로 스크롤해야하기 때문에 데이터 유효성 검사를 사용하기가 어렵게 만드는 수백 가지 옵션이 있습니다 –

+0

귀하의 권리, 복사 및 붙여 넣기로 데이터 유효성 검사가 실행되지 않습니다. 아래로 스크롤하는 것에 대한 부분은 값을 입력 할 수 있기 때문에 필연적이라고 생각하지 않습니다. 옵션 중 하나와 일치하는 한 오류가 발생하지 않습니다. VBA와 DV를 결합하여 변경시 이벤트를 트리거하고 붙여 넣기가 실행 취소 목록의 마지막 동작인지 확인하고 값을 셀에 다시 설정하여 VBA를 통해 데이터 유효성 검사를 트리거하는 방법을 찾는 것으로 생각할 수 있습니다. – nbayly

+0

감사합니다 nbayly 내가 위의 코드로 달성하려고하는 일종의 일종의 셀로 테스트 한 및 그것을 잘 작동합니다, 문제는 내가 범위에서 제품을 찾으려면 VLookup 사용할 때 발생합니다. 왜 작동하지 않는지 알 수 있습니까? "개체 변수 또는 블록 변수가 설정되지 않았습니다"라는 오류 메시지가 나타납니다. 모든 것을 시도했지만 그게 무엇인지 알 수 없습니다. –

관련 문제