2012-10-28 4 views
0

누군가가 나를 도와 줄 수 있는지 궁금합니다.Excel 시트 변경 내용 추적

Excel 워크 시트의 변경 내용을 추적하기 위해 아래 코드를 사용하여 B5 범위의 셀 값이 'A'열에 'A'열과 'AE'열에 자동으로 삽입됩니다. Q2000이 변경되었습니다.

Option Explicit 
    Public preValue As Variant 
    Private Sub Worksheet_Change(ByVal Target As Range) 

    Dim Cell As Range, res As Variant 
     If Target.Cells.Count > 1 Then Exit Sub 
     On Error Resume Next 
     If Not Intersect(Target, Range("B5:Q2000")) Is Nothing Then 
     If Target.Value <> preValue And Target.Value <> "" Then 
      Application.EnableEvents = False 
      Range("A5:A" & Target.Row).Value = Date 
      Range("AE5:AE" & Target.Row).Value = "No" 
      Application.EnableEvents = True 
      Target.ClearComments 
      ' Target.AddComment.Text Text:="Previous Value was " & preValue & Chr(10) & "Revised " & Format(Date, "dd-mm-yyyy") & Chr(10) & "By " & Environ("UserName") 
      Target.Interior.ColorIndex = 35 
     End If 
    End If 
    On Error GoTo 0 

    End Sub 

Private Sub Worksheet_SelectionChange(ByVal Target As Range) 
    If Target.Count = 1 Then preValue = Target.Value 
End Sub 

불행히도 나는 해결 방법을 모르는 문제를 발견했습니다.

사용자가 데이터를 D5 및 D10 셀에 삽입하면 날짜와 단어 'No'가이 두 행의 올바른 열 (A 및 AE)에 추가됩니다.

그러나 불행하게도 사용자가이 행에 다른 데이터를 입력하지 않은 경우에도 '아니요'값과 날짜가 D6-D9 사이의 행에 대한이 열에 추가됩니다. 문제가 어디에 있는지 모르겠다.

나는 누군가가 이것을보고 어떻게 해결할 수 있는지에 대한 지침을 줄 수 있을지 궁금해했습니다.

많은 감사와 안부

답변

0

현재 코드 Target's 행을 통해 A5AE5 시작하여 변경 사항을 적용한다. 선택한 셀의 행 코드 변경을하려면이 변경이에

Range("A5:A" & Target.Row).Value = Date 
Range("AE5:AE" & Target.Row).Value = "No" 

을 : 또한

Range("A" & Target.Row).Value = Date 
Range("AE" & Target.Row).Value = "No" 

, 당신은 변수 Cell 또는 res를 사용하지 않는 것. 해당 코드 행을 삭제하고자 할 수 있습니다.

+0

안녕하세요 @ 덕 글 랜시 (Doug Glancy), 내 게시물에 답장을 보내 주셔서 감사합니다. 그것은 위대한 작품! 친절함에 대해 – IRHM

관련 문제