2012-03-13 5 views
-2

내 Excel 시트에서 입력 내용을 추적하고 싶습니다.EXCEL에서 입력 이미지 추적을 수행하는 방법

예를 들어 ID와 같은 것을 입력하고 ENTER 키를 누르면 다른 시트에서 해당 ID를 찾아 이름을 찾고 입력 한 원래 셀의 ID를 바꿉니다.

이렇게하려면 VBA를 사용해도 되나요?

간단한 예가 좋을 것입니다. 감사합니다.

업데이트 :

예 물론, 내가 ID를 입력합니다 일부 특정 세포가 아니라 전체 시트 때문에 추적해야합니다.

+1

매우 작은 조각상이 전혀 추적 될 필요가 없다는 것을 알게 될 것입니다 ... –

답변

2

작업에 대한 Worksheet_Change(ByVal Target As Range) 이벤트 처리기 (워크 시트에 대해 정의 됨)를 사용하십시오. 이 함수는 해당 워크 시트의 셀 값이 변경 될 때마다 (사용자 또는 다른 코드에 의해) 호출됩니다.

Target 매개 변수에는 변경된 셀 범위가 포함됩니다. 이제 해당 범위의 열과 행을 반복하고 수행 할 조회/바꾸기 작업을 수행합니다. 이벤트 처리기가 자체 호출하지 않는 부울 변수를 추가로 지정하십시오.

Public NoCellUpdateHandle As Boolean 

Private Sub Worksheet_Change(ByVal Target As Range) 
    If NoCellUpdateHandle Then Exit Sub 

    Dim row As Integer, col as Integer, idValue as String, replaceValue as String 

    For Each columnObj In Target.Columns 
     For Each rowObj In columnObj.Rows 
      row = rowObj.Row 
      col = columnObj.Column 

      ' You can filter for certain rows/columns 
      If row > 5 And row < 10 And col = 7 Then 
       idValue = ActiveSheet.Cells(row, col).Value 
       ' do the lookup for the id value in the other worksheet here 
       ' replaceValue = lookup(idValue) 

       ' Disable the event handler and perform the replacement 
       NoCellUpdateHandle = True 
       ActiveSheet.Cells(row, col).Value = replaceValue 
       NoCellUpdateHandle = False 
      End If 
     Next rowObj 
    Next columnObj 
End Sub 

필요한 것이 전부입니다.

+0

1) 효율성을 현명하게 설정하면 코드가 연속적으로 코드를 중단시키기 위해 이벤트를 비활성화해야합니다. 부울 검사로 진행중인 셀이 아닌 경우 2) 일반적으로 Change 이벤트 특정 범위로 제한되며, 나중에 결과를 필터링하더라도 전체 시트에 대해 열어 두지 않습니다. – brettdj

+0

+1 이것은 좋은 답변이지만 목록 유효성 검사를 사용하면 더 간단하게 얻을 수 있습니까? (즉'NAME' /'ID's의 목록으로 드롭 다운을 허용합니까?)? – Gaffi

관련 문제