2013-10-09 1 views
1

이전 값과 새 값을 호출하는 데 사용하는 코드가 있습니다. 그러나 지금 나는 사용자가 간단히 a와 hits 삭제를 실행하면 변경 사항을 실행하고 기록하지만 어떤 이유로 인해 동일한 요청의 인스턴스가 더 많이 실행됩니다. 한 번만 실행되도록하는 방법이 있습니까? 감사이전 값과 새 값 변경

Public OldValues As New Collection 

Private Sub Worksheet_SelectionChange(ByVal Target As Range) 
If Sheets("Pagination").Range("J11") <> "Yes" Then Exit Sub 

    'Copy old values 
    Set OldValues = Nothing 
    Dim c As Range 
    For Each c In Target 
     OldValues.Add c.Value, c.Address 
    Next c 
End Sub 

Private Sub Worksheet_Change(ByVal Target As Range) 

If Sheets("Pagination").Range("J11") <> "Yes" Then Exit Sub 

    On Local Error Resume Next ' To avoid error if the old value of the cell address you're looking for has not been copied 
    Dim c As Range 
    For Each c In Target 
     Sheets("corrections").Cells(Rows.Count, "A").End(xlUp)(2).Value = Now & " Sheet " & ActiveSheet.Name & " Cell " & Target.Address(0, 0) & " has a new value of " & c.Value & "; old value was " & OldValues(c.Address) 
    Next c 
    'Copy old values (in case you made any changes in previous lines of code) 
    Set OldValues = Nothing 
    For Each c In Target 
     OldValues.Add c.Value, c.Address 
    Next c 
End Sub 
+0

'하이라이트 a'는 무엇을 의미합니까? '더 많은 경우'는 무엇을 의미합니까? 아마도이 문제는 [이 답변] (http://stackoverflow.com/a/17405206/2143262)에 설명 된 방법으로 해결할 수 있습니다. –

+0

예를 들어 셀 B5에서 삭제 버튼을 누르는 경우입니다. 2013 년 9 월 10 일 9:41:15 AM 시트 UCF (2) 셀 B5 : AE5의 새 값은; 이전 값은 5 10/9/2013 9:41:15 AM 시트 UCF (2) 셀 B5 : AE5의 새 값은 다음과 같습니다. 이전 값은 10/9/2013 9:41:15 AM 시트 UCF (2) 셀 B5 : AE5의 새 값은 다음과 같습니다. 이전 값은 10/9/2013 9:41:15 AM 시트 UCF (2) 셀 B5 : AE5의 새 값은 다음과 같습니다. 이전 값이 – imageicb

+0

이었습니다. 솔루션이 내 링크 또는 아래 답변에 있습니다. –

답변

1

는 그것의 끝에서 다시 Application.EnableEvents = TrueWorksheet_Change 이벤트의 시작 부분에 Application.EnableEvents = False를 추가합니다.

편집 : 나는 당신의 문제 나 자신을 다시 만들 수 없으며, 매크로 같은 시트에 변경되지 않기 때문에, 위의 솔루션을해도 차이가 나지 않을 것이다. 이 같은 이벤트를 사용하지 않도록 설정해야하는 "수정"시트에 다른 Worksheet_Change 이벤트가 있습니까?


Application.EnableEventsworksheet_change 이벤트를 갖는 시트의 셀을 afftect있다 다른 기능을 추가한다. 셀 A1의 값은 worksheet_change 이벤트를 변화하는 경우에도 예를 들면

가 호출된다.